﻿2026-06-22T00:46:25.3795829Z ##[group]Run ./traceable-reqs check --json
2026-06-22T00:46:25.3796192Z [36;1m./traceable-reqs check --json[0m
2026-06-22T00:46:25.3809482Z shell: /usr/bin/bash -e {0}
2026-06-22T00:46:25.3809762Z ##[endgroup]
2026-06-22T00:46:25.4049712Z {
2026-06-22T00:46:25.4050079Z   "schemaVersion": 1,
2026-06-22T00:46:25.4050327Z   "summary": {
2026-06-22T00:46:25.4050555Z     "requirementCount": 280,
2026-06-22T00:46:25.4050823Z     "completeCount": 280,
2026-06-22T00:46:25.4051165Z     "incompleteCount": 0,
2026-06-22T00:46:25.4051486Z     "findingCount": 0
2026-06-22T00:46:25.4051745Z   },
2026-06-22T00:46:25.4051960Z   "requirements": [
2026-06-22T00:46:25.4052255Z     {
2026-06-22T00:46:25.4052512Z       "id": "REQ-API-1",
2026-06-22T00:46:25.4052904Z       "title": "api prefix and adapter_name on every machinery invocation",
2026-06-22T00:46:25.4053261Z       "requiredStages": [
2026-06-22T00:46:25.4053586Z         "impl",
2026-06-22T00:46:25.4053901Z         "unit",
2026-06-22T00:46:25.4054199Z         "int"
2026-06-22T00:46:25.4054543Z       ],
2026-06-22T00:46:25.4054829Z       "stages": {
2026-06-22T00:46:25.4055130Z         "doc": {
2026-06-22T00:46:25.4055440Z           "complete": false,
2026-06-22T00:46:25.4055793Z           "evidence": []
2026-06-22T00:46:25.4056112Z         },
2026-06-22T00:46:25.4056406Z         "impl": {
2026-06-22T00:46:25.4056708Z           "complete": true,
2026-06-22T00:46:25.4057042Z           "evidence": [
2026-06-22T00:46:25.4057353Z             {
2026-06-22T00:46:25.4057687Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T00:46:25.4058067Z               "line": 15
2026-06-22T00:46:25.4058382Z             }
2026-06-22T00:46:25.4058664Z           ]
2026-06-22T00:46:25.4059026Z         },
2026-06-22T00:46:25.4059334Z         "int": {
2026-06-22T00:46:25.4060186Z           "complete": true,
2026-06-22T00:46:25.4060529Z           "evidence": [
2026-06-22T00:46:25.4060849Z             {
2026-06-22T00:46:25.4061189Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T00:46:25.4061617Z               "line": 13
2026-06-22T00:46:25.4061943Z             }
2026-06-22T00:46:25.4062238Z           ]
2026-06-22T00:46:25.4062525Z         },
2026-06-22T00:46:25.4062820Z         "unit": {
2026-06-22T00:46:25.4063135Z           "complete": true,
2026-06-22T00:46:25.4063464Z           "evidence": [
2026-06-22T00:46:25.4063793Z             {
2026-06-22T00:46:25.4064132Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T00:46:25.4064545Z               "line": 717
2026-06-22T00:46:25.4064869Z             },
2026-06-22T00:46:25.4065170Z             {
2026-06-22T00:46:25.4065517Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T00:46:25.4065927Z               "line": 804
2026-06-22T00:46:25.4066251Z             }
2026-06-22T00:46:25.4066562Z           ]
2026-06-22T00:46:25.4066847Z         }
2026-06-22T00:46:25.4067135Z       }
2026-06-22T00:46:25.4067407Z     },
2026-06-22T00:46:25.4067703Z     {
2026-06-22T00:46:25.4068003Z       "id": "REQ-API-2",
2026-06-22T00:46:25.4068508Z       "title": "The api subcommand surface (bind/listen/poll/state/worker/boundary/...)",
2026-06-22T00:46:25.4069162Z       "requiredStages": [
2026-06-22T00:46:25.4069511Z         "impl",
2026-06-22T00:46:25.4069813Z         "unit",
2026-06-22T00:46:25.4070112Z         "int"
2026-06-22T00:46:25.4070407Z       ],
2026-06-22T00:46:25.4070693Z       "stages": {
2026-06-22T00:46:25.4070994Z         "doc": {
2026-06-22T00:46:25.4071299Z           "complete": false,
2026-06-22T00:46:25.4071675Z           "evidence": []
2026-06-22T00:46:25.4071995Z         },
2026-06-22T00:46:25.4072285Z         "impl": {
2026-06-22T00:46:25.4072611Z           "complete": true,
2026-06-22T00:46:25.4072935Z           "evidence": [
2026-06-22T00:46:25.4073274Z             {
2026-06-22T00:46:25.4073623Z               "path": "crates/spt-store/src/history.rs",
2026-06-22T00:46:25.4074343Z               "line": 17
2026-06-22T00:46:25.4074678Z             },
2026-06-22T00:46:25.4074987Z             {
2026-06-22T00:46:25.4075605Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T00:46:25.4076030Z               "line": 20
2026-06-22T00:46:25.4076363Z             },
2026-06-22T00:46:25.4076650Z             {
2026-06-22T00:46:25.4077011Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T00:46:25.4077430Z               "line": 142
2026-06-22T00:46:25.4077761Z             },
2026-06-22T00:46:25.4078072Z             {
2026-06-22T00:46:25.4078419Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.4078841Z               "line": 24
2026-06-22T00:46:25.4079264Z             },
2026-06-22T00:46:25.4079568Z             {
2026-06-22T00:46:25.4079922Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.4080340Z               "line": 41
2026-06-22T00:46:25.4080667Z             },
2026-06-22T00:46:25.4080967Z             {
2026-06-22T00:46:25.4081330Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.4081745Z               "line": 213
2026-06-22T00:46:25.4082074Z             },
2026-06-22T00:46:25.4082365Z             {
2026-06-22T00:46:25.4082718Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.4083157Z               "line": 255
2026-06-22T00:46:25.4083482Z             },
2026-06-22T00:46:25.4083777Z             {
2026-06-22T00:46:25.4084130Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.4084546Z               "line": 334
2026-06-22T00:46:25.4084866Z             },
2026-06-22T00:46:25.4085161Z             {
2026-06-22T00:46:25.4085520Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.4085938Z               "line": 397
2026-06-22T00:46:25.4086276Z             },
2026-06-22T00:46:25.4086580Z             {
2026-06-22T00:46:25.4086928Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.4087357Z               "line": 436
2026-06-22T00:46:25.4087692Z             },
2026-06-22T00:46:25.4087976Z             {
2026-06-22T00:46:25.4088331Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T00:46:25.4088732Z               "line": 17
2026-06-22T00:46:25.4089171Z             },
2026-06-22T00:46:25.4089466Z             {
2026-06-22T00:46:25.4089805Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T00:46:25.4090210Z               "line": 30
2026-06-22T00:46:25.4090534Z             },
2026-06-22T00:46:25.4090829Z             {
2026-06-22T00:46:25.4091170Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T00:46:25.4091595Z               "line": 63
2026-06-22T00:46:25.4091920Z             },
2026-06-22T00:46:25.4092234Z             {
2026-06-22T00:46:25.4092578Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T00:46:25.4093000Z               "line": 77
2026-06-22T00:46:25.4093329Z             }
2026-06-22T00:46:25.4093632Z           ]
2026-06-22T00:46:25.4093938Z         },
2026-06-22T00:46:25.4094233Z         "int": {
2026-06-22T00:46:25.4094562Z           "complete": true,
2026-06-22T00:46:25.4094919Z           "evidence": [
2026-06-22T00:46:25.4095239Z             {
2026-06-22T00:46:25.4095606Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T00:46:25.4096055Z               "line": 14
2026-06-22T00:46:25.4096392Z             },
2026-06-22T00:46:25.4096649Z             {
2026-06-22T00:46:25.4096930Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T00:46:25.4097226Z               "line": 187
2026-06-22T00:46:25.4097451Z             }
2026-06-22T00:46:25.4097661Z           ]
2026-06-22T00:46:25.4097856Z         },
2026-06-22T00:46:25.4098066Z         "unit": {
2026-06-22T00:46:25.4098290Z           "complete": true,
2026-06-22T00:46:25.4098532Z           "evidence": [
2026-06-22T00:46:25.4098815Z             {
2026-06-22T00:46:25.4099163Z               "path": "crates/spt-store/src/history.rs",
2026-06-22T00:46:25.4099646Z               "line": 82
2026-06-22T00:46:25.4099884Z             },
2026-06-22T00:46:25.4100145Z             {
2026-06-22T00:46:25.4100581Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T00:46:25.4100876Z               "line": 279
2026-06-22T00:46:25.4101167Z             },
2026-06-22T00:46:25.4101384Z             {
2026-06-22T00:46:25.4101636Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.4101931Z               "line": 709
2026-06-22T00:46:25.4102170Z             },
2026-06-22T00:46:25.4102402Z             {
2026-06-22T00:46:25.4102669Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.4102956Z               "line": 720
2026-06-22T00:46:25.4103176Z             },
2026-06-22T00:46:25.4103380Z             {
2026-06-22T00:46:25.4103642Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.4103942Z               "line": 873
2026-06-22T00:46:25.4104174Z             },
2026-06-22T00:46:25.4104382Z             {
2026-06-22T00:46:25.4104639Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.4104921Z               "line": 919
2026-06-22T00:46:25.4105146Z             },
2026-06-22T00:46:25.4105347Z             {
2026-06-22T00:46:25.4105594Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T00:46:25.4105880Z               "line": 143
2026-06-22T00:46:25.4106109Z             },
2026-06-22T00:46:25.4106325Z             {
2026-06-22T00:46:25.4106567Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T00:46:25.4106851Z               "line": 187
2026-06-22T00:46:25.4107081Z             }
2026-06-22T00:46:25.4107286Z           ]
2026-06-22T00:46:25.4107481Z         }
2026-06-22T00:46:25.4107701Z       }
2026-06-22T00:46:25.4107901Z     },
2026-06-22T00:46:25.4108096Z     {
2026-06-22T00:46:25.4108302Z       "id": "REQ-API-3",
2026-06-22T00:46:25.4108598Z       "title": "commune/signoff are file-drops, not commands",
2026-06-22T00:46:25.4108913Z       "requiredStages": [
2026-06-22T00:46:25.4109254Z         "impl",
2026-06-22T00:46:25.4109470Z         "unit",
2026-06-22T00:46:25.4109676Z         "int"
2026-06-22T00:46:25.4109887Z       ],
2026-06-22T00:46:25.4110095Z       "stages": {
2026-06-22T00:46:25.4110521Z         "doc": {
2026-06-22T00:46:25.4110840Z           "complete": false,
2026-06-22T00:46:25.4111231Z           "evidence": []
2026-06-22T00:46:25.4111612Z         },
2026-06-22T00:46:25.4111916Z         "impl": {
2026-06-22T00:46:25.4112275Z           "complete": true,
2026-06-22T00:46:25.4112633Z           "evidence": [
2026-06-22T00:46:25.4112962Z             {
2026-06-22T00:46:25.4113378Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T00:46:25.4113764Z               "line": 27
2026-06-22T00:46:25.4114107Z             },
2026-06-22T00:46:25.4114417Z             {
2026-06-22T00:46:25.4114785Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.4115205Z               "line": 566
2026-06-22T00:46:25.4115543Z             }
2026-06-22T00:46:25.4116020Z           ]
2026-06-22T00:46:25.4116340Z         },
2026-06-22T00:46:25.4142996Z         "int": {
2026-06-22T00:46:25.4143374Z           "complete": true,
2026-06-22T00:46:25.4143634Z           "evidence": [
2026-06-22T00:46:25.4143862Z             {
2026-06-22T00:46:25.4144186Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T00:46:25.4144581Z               "line": 261
2026-06-22T00:46:25.4144891Z             }
2026-06-22T00:46:25.4145125Z           ]
2026-06-22T00:46:25.4145325Z         },
2026-06-22T00:46:25.4145592Z         "unit": {
2026-06-22T00:46:25.4145801Z           "complete": true,
2026-06-22T00:46:25.4146041Z           "evidence": [
2026-06-22T00:46:25.4146330Z             {
2026-06-22T00:46:25.4146585Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T00:46:25.4146923Z               "line": 280
2026-06-22T00:46:25.4147162Z             },
2026-06-22T00:46:25.4147358Z             {
2026-06-22T00:46:25.4147630Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.4148178Z               "line": 948
2026-06-22T00:46:25.4148407Z             }
2026-06-22T00:46:25.4148769Z           ]
2026-06-22T00:46:25.4149063Z         }
2026-06-22T00:46:25.4149317Z       }
2026-06-22T00:46:25.4149521Z     },
2026-06-22T00:46:25.4149774Z     {
2026-06-22T00:46:25.4149985Z       "id": "REQ-API-4",
2026-06-22T00:46:25.4152093Z       "title": "api resolves the adapter manifest (+ profile + install dir) from `--adapter name:profile` via the registry when `--manifest` is omitted; `--manifest` becomes an optional OVERRIDE (unregistered / local-dev manifests). Removes the require-both-flags redundancy — a registered adapter's live bringup / digest / capability needs only `--adapter` — and yields the precise install dir (the record's source_dir) rather than the --manifest parent, closing the copy-mode psyche-binary edge (v0.8.0)",
2026-06-22T00:46:25.4153648Z       "requiredStages": [
2026-06-22T00:46:25.4153895Z         "doc",
2026-06-22T00:46:25.4154133Z         "impl",
2026-06-22T00:46:25.4154394Z         "unit"
2026-06-22T00:46:25.4154602Z       ],
2026-06-22T00:46:25.4154812Z       "stages": {
2026-06-22T00:46:25.4155070Z         "doc": {
2026-06-22T00:46:25.4155313Z           "complete": true,
2026-06-22T00:46:25.4155605Z           "evidence": [
2026-06-22T00:46:25.4155828Z             {
2026-06-22T00:46:25.4156095Z               "path": "CONTEXT.md",
2026-06-22T00:46:25.4156361Z               "line": 149
2026-06-22T00:46:25.4156639Z             }
2026-06-22T00:46:25.4156856Z           ]
2026-06-22T00:46:25.4157060Z         },
2026-06-22T00:46:25.4157294Z         "impl": {
2026-06-22T00:46:25.4157537Z           "complete": true,
2026-06-22T00:46:25.4157779Z           "evidence": [
2026-06-22T00:46:25.4158055Z             {
2026-06-22T00:46:25.4158304Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T00:46:25.4158590Z               "line": 484
2026-06-22T00:46:25.4158810Z             }
2026-06-22T00:46:25.4159111Z           ]
2026-06-22T00:46:25.4159353Z         },
2026-06-22T00:46:25.4159558Z         "int": {
2026-06-22T00:46:25.4159776Z           "complete": false,
2026-06-22T00:46:25.4160048Z           "evidence": []
2026-06-22T00:46:25.4160276Z         },
2026-06-22T00:46:25.4160478Z         "unit": {
2026-06-22T00:46:25.4160697Z           "complete": true,
2026-06-22T00:46:25.4160939Z           "evidence": [
2026-06-22T00:46:25.4161163Z             {
2026-06-22T00:46:25.4161408Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T00:46:25.4161694Z               "line": 657
2026-06-22T00:46:25.4161921Z             },
2026-06-22T00:46:25.4162115Z             {
2026-06-22T00:46:25.4162338Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T00:46:25.4162615Z               "line": 681
2026-06-22T00:46:25.4162838Z             },
2026-06-22T00:46:25.4163068Z             {
2026-06-22T00:46:25.4163307Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T00:46:25.4163579Z               "line": 705
2026-06-22T00:46:25.4163874Z             }
2026-06-22T00:46:25.4164079Z           ]
2026-06-22T00:46:25.4164275Z         }
2026-06-22T00:46:25.4164519Z       }
2026-06-22T00:46:25.4164721Z     },
2026-06-22T00:46:25.4164945Z     {
2026-06-22T00:46:25.4165186Z       "id": "REQ-ARCH-1",
2026-06-22T00:46:25.4165492Z       "title": "Many small acyclically-layered crates",
2026-06-22T00:46:25.4165869Z       "requiredStages": [
2026-06-22T00:46:25.4166165Z         "impl"
2026-06-22T00:46:25.4166364Z       ],
2026-06-22T00:46:25.4166564Z       "stages": {
2026-06-22T00:46:25.4166823Z         "doc": {
2026-06-22T00:46:25.4167046Z           "complete": false,
2026-06-22T00:46:25.4167298Z           "evidence": []
2026-06-22T00:46:25.4167558Z         },
2026-06-22T00:46:25.4167768Z         "impl": {
2026-06-22T00:46:25.4168030Z           "complete": true,
2026-06-22T00:46:25.4168263Z           "evidence": [
2026-06-22T00:46:25.4168512Z             {
2026-06-22T00:46:25.4168750Z               "path": "crates/spt-msg/src/lib.rs",
2026-06-22T00:46:25.4169313Z               "line": 18
2026-06-22T00:46:25.4169541Z             },
2026-06-22T00:46:25.4170029Z             {
2026-06-22T00:46:25.4170274Z               "path": "crates/spt-proto/src/lib.rs",
2026-06-22T00:46:25.4170575Z               "line": 12
2026-06-22T00:46:25.4170808Z             },
2026-06-22T00:46:25.4171005Z             {
2026-06-22T00:46:25.4171286Z               "path": "crates/spt-store/src/lib.rs",
2026-06-22T00:46:25.4171610Z               "line": 12
2026-06-22T00:46:25.4171833Z             }
2026-06-22T00:46:25.4172020Z           ]
2026-06-22T00:46:25.4172236Z         },
2026-06-22T00:46:25.4172429Z         "int": {
2026-06-22T00:46:25.4172657Z           "complete": false,
2026-06-22T00:46:25.4172923Z           "evidence": []
2026-06-22T00:46:25.4173146Z         },
2026-06-22T00:46:25.4173375Z         "unit": {
2026-06-22T00:46:25.4173595Z           "complete": false,
2026-06-22T00:46:25.4173838Z           "evidence": []
2026-06-22T00:46:25.4174095Z         }
2026-06-22T00:46:25.4174296Z       }
2026-06-22T00:46:25.4174530Z     },
2026-06-22T00:46:25.4174720Z     {
2026-06-22T00:46:25.4174943Z       "id": "REQ-ARCH-2",
2026-06-22T00:46:25.4175305Z       "title": "Public SDK surface is spt-proto, spt-runtime, spt-msg",
2026-06-22T00:46:25.4175651Z       "requiredStages": [
2026-06-22T00:46:25.4175913Z         "impl"
2026-06-22T00:46:25.4176124Z       ],
2026-06-22T00:46:25.4176337Z       "stages": {
2026-06-22T00:46:25.4176552Z         "doc": {
2026-06-22T00:46:25.4176768Z           "complete": false,
2026-06-22T00:46:25.4176996Z           "evidence": []
2026-06-22T00:46:25.4177219Z         },
2026-06-22T00:46:25.4177421Z         "impl": {
2026-06-22T00:46:25.4177655Z           "complete": true,
2026-06-22T00:46:25.4177953Z           "evidence": [
2026-06-22T00:46:25.4178213Z             {
2026-06-22T00:46:25.4178590Z               "path": "crates/spt-runtime/src/lib.rs",
2026-06-22T00:46:25.4179091Z               "line": 18
2026-06-22T00:46:25.4179400Z             }
2026-06-22T00:46:25.4179691Z           ]
2026-06-22T00:46:25.4179968Z         },
2026-06-22T00:46:25.4180274Z         "int": {
2026-06-22T00:46:25.4180622Z           "complete": false,
2026-06-22T00:46:25.4180969Z           "evidence": []
2026-06-22T00:46:25.4181298Z         },
2026-06-22T00:46:25.4181588Z         "unit": {
2026-06-22T00:46:25.4181903Z           "complete": false,
2026-06-22T00:46:25.4182280Z           "evidence": []
2026-06-22T00:46:25.4182622Z         }
2026-06-22T00:46:25.4182913Z       }
2026-06-22T00:46:25.4183203Z     },
2026-06-22T00:46:25.4183493Z     {
2026-06-22T00:46:25.4183793Z       "id": "REQ-ARCH-3",
2026-06-22T00:46:25.4184345Z       "title": "Wire-protocol version independent of crate semver, N-1 compat window",
2026-06-22T00:46:25.4184946Z       "requiredStages": [
2026-06-22T00:46:25.4185295Z         "impl",
2026-06-22T00:46:25.4185590Z         "unit"
2026-06-22T00:46:25.4185889Z       ],
2026-06-22T00:46:25.4186192Z       "stages": {
2026-06-22T00:46:25.4186535Z         "doc": {
2026-06-22T00:46:25.4186902Z           "complete": false,
2026-06-22T00:46:25.4187285Z           "evidence": []
2026-06-22T00:46:25.4187647Z         },
2026-06-22T00:46:25.4187856Z         "impl": {
2026-06-22T00:46:25.4188070Z           "complete": true,
2026-06-22T00:46:25.4188310Z           "evidence": [
2026-06-22T00:46:25.4188518Z             {
2026-06-22T00:46:25.4188759Z               "path": "crates/spt-proto/src/version.rs",
2026-06-22T00:46:25.4189145Z               "line": 34
2026-06-22T00:46:25.4189364Z             },
2026-06-22T00:46:25.4189556Z             {
2026-06-22T00:46:25.4189794Z               "path": "crates/spt-proto/src/version.rs",
2026-06-22T00:46:25.4190080Z               "line": 41
2026-06-22T00:46:25.4190408Z             }
2026-06-22T00:46:25.4190599Z           ]
2026-06-22T00:46:25.4190796Z         },
2026-06-22T00:46:25.4190990Z         "int": {
2026-06-22T00:46:25.4191205Z           "complete": false,
2026-06-22T00:46:25.4191448Z           "evidence": []
2026-06-22T00:46:25.4191858Z         },
2026-06-22T00:46:25.4192048Z         "unit": {
2026-06-22T00:46:25.4192267Z           "complete": true,
2026-06-22T00:46:25.4192615Z           "evidence": [
2026-06-22T00:46:25.4192830Z             {
2026-06-22T00:46:25.4193074Z               "path": "crates/spt-proto/src/version.rs",
2026-06-22T00:46:25.4193346Z               "line": 51
2026-06-22T00:46:25.4193568Z             },
2026-06-22T00:46:25.4193777Z             {
2026-06-22T00:46:25.4194010Z               "path": "crates/spt-proto/src/version.rs",
2026-06-22T00:46:25.4194281Z               "line": 71
2026-06-22T00:46:25.4194495Z             },
2026-06-22T00:46:25.4194697Z             {
2026-06-22T00:46:25.4194940Z               "path": "crates/spt-proto/src/version.rs",
2026-06-22T00:46:25.4195216Z               "line": 83
2026-06-22T00:46:25.4195435Z             }
2026-06-22T00:46:25.4195636Z           ]
2026-06-22T00:46:25.4195835Z         }
2026-06-22T00:46:25.4196035Z       }
2026-06-22T00:46:25.4196213Z     },
2026-06-22T00:46:25.4196416Z     {
2026-06-22T00:46:25.4196625Z       "id": "REQ-ARCH-4",
2026-06-22T00:46:25.4196953Z       "title": "Copy-verbatim the commodity layer from the sister project",
2026-06-22T00:46:25.4197316Z       "requiredStages": [
2026-06-22T00:46:25.4197535Z         "impl",
2026-06-22T00:46:25.4197739Z         "unit"
2026-06-22T00:46:25.4197944Z       ],
2026-06-22T00:46:25.4198141Z       "stages": {
2026-06-22T00:46:25.4198350Z         "doc": {
2026-06-22T00:46:25.4198570Z           "complete": false,
2026-06-22T00:46:25.4198804Z           "evidence": []
2026-06-22T00:46:25.4199116Z         },
2026-06-22T00:46:25.4199319Z         "impl": {
2026-06-22T00:46:25.4199540Z           "complete": true,
2026-06-22T00:46:25.4199783Z           "evidence": [
2026-06-22T00:46:25.4200001Z             {
2026-06-22T00:46:25.4200239Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T00:46:25.4200520Z               "line": 165
2026-06-22T00:46:25.4200736Z             },
2026-06-22T00:46:25.4200950Z             {
2026-06-22T00:46:25.4201193Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T00:46:25.4201474Z               "line": 188
2026-06-22T00:46:25.4201700Z             },
2026-06-22T00:46:25.4201902Z             {
2026-06-22T00:46:25.4202150Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T00:46:25.4202423Z               "line": 208
2026-06-22T00:46:25.4202643Z             },
2026-06-22T00:46:25.4202841Z             {
2026-06-22T00:46:25.4203080Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T00:46:25.4203366Z               "line": 223
2026-06-22T00:46:25.4203596Z             },
2026-06-22T00:46:25.4203795Z             {
2026-06-22T00:46:25.4204038Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T00:46:25.4204327Z               "line": 273
2026-06-22T00:46:25.4204541Z             }
2026-06-22T00:46:25.4204741Z           ]
2026-06-22T00:46:25.4204942Z         },
2026-06-22T00:46:25.4205136Z         "int": {
2026-06-22T00:46:25.4205384Z           "complete": false,
2026-06-22T00:46:25.4205624Z           "evidence": []
2026-06-22T00:46:25.4205839Z         },
2026-06-22T00:46:25.4206048Z         "unit": {
2026-06-22T00:46:25.4206272Z           "complete": true,
2026-06-22T00:46:25.4206511Z           "evidence": [
2026-06-22T00:46:25.4206730Z             {
2026-06-22T00:46:25.4206967Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T00:46:25.4207241Z               "line": 334
2026-06-22T00:46:25.4207475Z             },
2026-06-22T00:46:25.4207665Z             {
2026-06-22T00:46:25.4207904Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T00:46:25.4208181Z               "line": 344
2026-06-22T00:46:25.4208405Z             },
2026-06-22T00:46:25.4208609Z             {
2026-06-22T00:46:25.4208852Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T00:46:25.4209234Z               "line": 355
2026-06-22T00:46:25.4209463Z             },
2026-06-22T00:46:25.4209657Z             {
2026-06-22T00:46:25.4210017Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T00:46:25.4210304Z               "line": 366
2026-06-22T00:46:25.4210638Z             },
2026-06-22T00:46:25.4210842Z             {
2026-06-22T00:46:25.4211090Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T00:46:25.4211372Z               "line": 378
2026-06-22T00:46:25.4211587Z             },
2026-06-22T00:46:25.4211796Z             {
2026-06-22T00:46:25.4212030Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T00:46:25.4212303Z               "line": 391
2026-06-22T00:46:25.4212525Z             },
2026-06-22T00:46:25.4212729Z             {
2026-06-22T00:46:25.4212968Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T00:46:25.4213250Z               "line": 402
2026-06-22T00:46:25.4213474Z             },
2026-06-22T00:46:25.4213678Z             {
2026-06-22T00:46:25.4213917Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T00:46:25.4232478Z               "line": 419
2026-06-22T00:46:25.4232797Z             },
2026-06-22T00:46:25.4233003Z             {
2026-06-22T00:46:25.4233250Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T00:46:25.4233554Z               "line": 547
2026-06-22T00:46:25.4233780Z             }
2026-06-22T00:46:25.4233974Z           ]
2026-06-22T00:46:25.4234160Z         }
2026-06-22T00:46:25.4234347Z       }
2026-06-22T00:46:25.4234526Z     },
2026-06-22T00:46:25.4234718Z     {
2026-06-22T00:46:25.4234913Z       "id": "REQ-CLI-1",
2026-06-22T00:46:25.4236187Z       "title": "spt endpoint noun namespace: absorbs fork/suspend/wake/shutdown/rename/stop/digest + access (ported 1:1: allow|revoke|open|list, decision 21) + description (ex-resources blurb; bare=show, set=author); merged endpoint list [--local|--subnet <name>] grouped by subnet with SELF pinned, --detail adding the ex-resources yellow-pages blurb projection; bare spt endpoint = the list (M8 decisions 1-2, 25)",
2026-06-22T00:46:25.4237375Z       "requiredStages": [
2026-06-22T00:46:25.4237613Z         "impl",
2026-06-22T00:46:25.4237819Z         "unit"
2026-06-22T00:46:25.4238009Z       ],
2026-06-22T00:46:25.4238211Z       "stages": {
2026-06-22T00:46:25.4238410Z         "doc": {
2026-06-22T00:46:25.4238624Z           "complete": false,
2026-06-22T00:46:25.4238852Z           "evidence": []
2026-06-22T00:46:25.4239403Z         },
2026-06-22T00:46:25.4239603Z         "impl": {
2026-06-22T00:46:25.4239809Z           "complete": true,
2026-06-22T00:46:25.4240028Z           "evidence": [
2026-06-22T00:46:25.4240242Z             {
2026-06-22T00:46:25.4240476Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4240735Z               "line": 225
2026-06-22T00:46:25.4240948Z             },
2026-06-22T00:46:25.4241143Z             {
2026-06-22T00:46:25.4241357Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4241626Z               "line": 1093
2026-06-22T00:46:25.4241846Z             },
2026-06-22T00:46:25.4242042Z             {
2026-06-22T00:46:25.4242260Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4242523Z               "line": 1720
2026-06-22T00:46:25.4242742Z             },
2026-06-22T00:46:25.4242938Z             {
2026-06-22T00:46:25.4243152Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4243414Z               "line": 3124
2026-06-22T00:46:25.4243625Z             }
2026-06-22T00:46:25.4243820Z           ]
2026-06-22T00:46:25.4244011Z         },
2026-06-22T00:46:25.4244205Z         "int": {
2026-06-22T00:46:25.4244415Z           "complete": false,
2026-06-22T00:46:25.4244640Z           "evidence": []
2026-06-22T00:46:25.4244849Z         },
2026-06-22T00:46:25.4245040Z         "unit": {
2026-06-22T00:46:25.4245250Z           "complete": true,
2026-06-22T00:46:25.4245478Z           "evidence": [
2026-06-22T00:46:25.4245730Z             {
2026-06-22T00:46:25.4245955Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4246223Z               "line": 7947
2026-06-22T00:46:25.4246445Z             }
2026-06-22T00:46:25.4246829Z           ]
2026-06-22T00:46:25.4247029Z         }
2026-06-22T00:46:25.4247220Z       }
2026-06-22T00:46:25.4247516Z     },
2026-06-22T00:46:25.4247711Z     {
2026-06-22T00:46:25.4247916Z       "id": "REQ-CLI-2",
2026-06-22T00:46:25.4248780Z       "title": "spt daemon noun: run|stop|status (hidden daemon verb becomes daemon run; agent-endpoint shutdown keeps its name under endpoint); daemon status renders the pump heartbeat (last-tick recency) so a half-dead daemon is never rendered implied-healthy (M8 decisions 5, 23)",
2026-06-22T00:46:25.4249739Z       "requiredStages": [
2026-06-22T00:46:25.4249963Z         "impl",
2026-06-22T00:46:25.4250172Z         "unit"
2026-06-22T00:46:25.4250369Z       ],
2026-06-22T00:46:25.4250564Z       "stages": {
2026-06-22T00:46:25.4250759Z         "doc": {
2026-06-22T00:46:25.4250970Z           "complete": false,
2026-06-22T00:46:25.4251212Z           "evidence": []
2026-06-22T00:46:25.4251431Z         },
2026-06-22T00:46:25.4251629Z         "impl": {
2026-06-22T00:46:25.4251854Z           "complete": true,
2026-06-22T00:46:25.4252086Z           "evidence": [
2026-06-22T00:46:25.4252297Z             {
2026-06-22T00:46:25.4252544Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.4252830Z               "line": 414
2026-06-22T00:46:25.4253054Z             },
2026-06-22T00:46:25.4253264Z             {
2026-06-22T00:46:25.4253498Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-22T00:46:25.4253789Z               "line": 97
2026-06-22T00:46:25.4254008Z             },
2026-06-22T00:46:25.4254209Z             {
2026-06-22T00:46:25.4254452Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T00:46:25.4254736Z               "line": 256
2026-06-22T00:46:25.4254946Z             },
2026-06-22T00:46:25.4255152Z             {
2026-06-22T00:46:25.4255370Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4255638Z               "line": 434
2026-06-22T00:46:25.4255853Z             },
2026-06-22T00:46:25.4256048Z             {
2026-06-22T00:46:25.4256272Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4256539Z               "line": 1174
2026-06-22T00:46:25.4256759Z             },
2026-06-22T00:46:25.4256962Z             {
2026-06-22T00:46:25.4257184Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4257452Z               "line": 1958
2026-06-22T00:46:25.4257671Z             },
2026-06-22T00:46:25.4257866Z             {
2026-06-22T00:46:25.4258090Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4258339Z               "line": 2047
2026-06-22T00:46:25.4258552Z             },
2026-06-22T00:46:25.4258743Z             {
2026-06-22T00:46:25.4259053Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4259336Z               "line": 2108
2026-06-22T00:46:25.4259555Z             }
2026-06-22T00:46:25.4259744Z           ]
2026-06-22T00:46:25.4259939Z         },
2026-06-22T00:46:25.4260132Z         "int": {
2026-06-22T00:46:25.4260343Z           "complete": false,
2026-06-22T00:46:25.4260581Z           "evidence": []
2026-06-22T00:46:25.4260804Z         },
2026-06-22T00:46:25.4261015Z         "unit": {
2026-06-22T00:46:25.4261230Z           "complete": true,
2026-06-22T00:46:25.4261462Z           "evidence": [
2026-06-22T00:46:25.4261672Z             {
2026-06-22T00:46:25.4261911Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T00:46:25.4262198Z               "line": 338
2026-06-22T00:46:25.4262419Z             },
2026-06-22T00:46:25.4262618Z             {
2026-06-22T00:46:25.4262847Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4263104Z               "line": 8102
2026-06-22T00:46:25.4263323Z             }
2026-06-22T00:46:25.4263519Z           ]
2026-06-22T00:46:25.4263715Z         }
2026-06-22T00:46:25.4263905Z       }
2026-06-22T00:46:25.4264097Z     },
2026-06-22T00:46:25.4264282Z     {
2026-06-22T00:46:25.4264487Z       "id": "REQ-CLI-3",
2026-06-22T00:46:25.4265378Z       "title": "Agent hot path stays flat across the M8 reorg: send/ring/ready/whoami/how-to unchanged; notify moves to subnet notify while notif stays top-level; breaking renames land clean with no deprecation shims (zero external CLI consumers pre-spt-claude-code) (M8 decisions 3-4, 9)",
2026-06-22T00:46:25.4266441Z       "requiredStages": [
2026-06-22T00:46:25.4266661Z         "impl",
2026-06-22T00:46:25.4266870Z         "unit"
2026-06-22T00:46:25.4267066Z       ],
2026-06-22T00:46:25.4267257Z       "stages": {
2026-06-22T00:46:25.4267456Z         "doc": {
2026-06-22T00:46:25.4267665Z           "complete": false,
2026-06-22T00:46:25.4267906Z           "evidence": []
2026-06-22T00:46:25.4268116Z         },
2026-06-22T00:46:25.4268317Z         "impl": {
2026-06-22T00:46:25.4268531Z           "complete": true,
2026-06-22T00:46:25.4268769Z           "evidence": [
2026-06-22T00:46:25.4269074Z             {
2026-06-22T00:46:25.4269304Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4269576Z               "line": 1087
2026-06-22T00:46:25.4269805Z             }
2026-06-22T00:46:25.4270004Z           ]
2026-06-22T00:46:25.4270201Z         },
2026-06-22T00:46:25.4270399Z         "int": {
2026-06-22T00:46:25.4270607Z           "complete": false,
2026-06-22T00:46:25.4270836Z           "evidence": []
2026-06-22T00:46:25.4271050Z         },
2026-06-22T00:46:25.4271251Z         "unit": {
2026-06-22T00:46:25.4271470Z           "complete": true,
2026-06-22T00:46:25.4271708Z           "evidence": [
2026-06-22T00:46:25.4271914Z             {
2026-06-22T00:46:25.4272138Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4272400Z               "line": 7912
2026-06-22T00:46:25.4272623Z             }
2026-06-22T00:46:25.4272824Z           ]
2026-06-22T00:46:25.4273018Z         }
2026-06-22T00:46:25.4273216Z       }
2026-06-22T00:46:25.4273408Z     },
2026-06-22T00:46:25.4273602Z     {
2026-06-22T00:46:25.4273799Z       "id": "REQ-CLI-4",
2026-06-22T00:46:25.4276156Z       "title": "User-facing CLI output is human-readable: DIRECT-USER commands (e.g. adapter update/list/use) render friendly prose instead of raw CODE:RESULT markers — \"claude-spt is up to date (0.2.0).\" not \"ADAPTER_UPDATE_UPTODATE:claude-spt: installed 0.2.0, latest 0.2.0\". Strictly bounded to the direct-user surface: the adapter-PARSED bringup tokens (SEEDED/BOUND/READY/NO_SEED on seed/listen, which adapters grep) stay machine-parseable — humanization is additive (a human line beside the marker, or a --porcelain/--quiet split), never a silent rename of a dual-contract marker. The user-facing bringup composition belongs to the adapter (perri); this REQ owns only the direct-user CLI surface. (v0.9.0)",
2026-06-22T00:46:25.4278049Z       "requiredStages": [],
2026-06-22T00:46:25.4278290Z       "stages": {
2026-06-22T00:46:25.4278505Z         "doc": {
2026-06-22T00:46:25.4278723Z           "complete": false,
2026-06-22T00:46:25.4279043Z           "evidence": []
2026-06-22T00:46:25.4279263Z         },
2026-06-22T00:46:25.4279459Z         "impl": {
2026-06-22T00:46:25.4279682Z           "complete": true,
2026-06-22T00:46:25.4279916Z           "evidence": [
2026-06-22T00:46:25.4280141Z             {
2026-06-22T00:46:25.4280360Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4280631Z               "line": 5678
2026-06-22T00:46:25.4280860Z             }
2026-06-22T00:46:25.4281055Z           ]
2026-06-22T00:46:25.4281247Z         },
2026-06-22T00:46:25.4281448Z         "int": {
2026-06-22T00:46:25.4281721Z           "complete": false,
2026-06-22T00:46:25.4282168Z           "evidence": []
2026-06-22T00:46:25.4282478Z         },
2026-06-22T00:46:25.4282792Z         "unit": {
2026-06-22T00:46:25.4283174Z           "complete": false,
2026-06-22T00:46:25.4283493Z           "evidence": []
2026-06-22T00:46:25.4283866Z         }
2026-06-22T00:46:25.4284153Z       }
2026-06-22T00:46:25.4284453Z     },
2026-06-22T00:46:25.4284763Z     {
2026-06-22T00:46:25.4285073Z       "id": "REQ-CLI-HELP-MARKDOWN",
2026-06-22T00:46:25.4288338Z       "title": "`spt --help` (and every subcommand --help) renders the inline Markdown authored in the clap doc-comments as terminal styling, never as literal markers: `**bold**` → ANSI bold, `` `code` `` → ANSI cyan, `[text](url)` → `text`. The markers are STRIPPED either way — a raw `**` or backtick must NEVER reach the user (the operator-reported v0.12.0 defect: help text reads `**ctrl-b**` and stray backticks verbatim). Color/bold escapes are emitted ONLY when the help is going to a real terminal AND color is not suppressed (NO_COLOR unset · CLICOLOR != 0 · CLICOLOR_FORCE forces on); a pipe / redirect / CI / NO_COLOR falls back to strip-only (clean plaintext, zero escapes) so machine-readable help is byte-identical regardless of marker syntax. Pure transform over the clap-rendered help string at the single run()/bare_invocation chokepoint; preserves pre-existing ANSI (CSI sequences passed through untouched), never spans markers across a newline, leaves unmatched/empty markers literal, and does not alter the help layout. (v0.12.1)",
2026-06-22T00:46:25.4291727Z       "requiredStages": [
2026-06-22T00:46:25.4292075Z         "impl",
2026-06-22T00:46:25.4292394Z         "unit"
2026-06-22T00:46:25.4292728Z       ],
2026-06-22T00:46:25.4293014Z       "stages": {
2026-06-22T00:46:25.4293320Z         "doc": {
2026-06-22T00:46:25.4293720Z           "complete": false,
2026-06-22T00:46:25.4294071Z           "evidence": []
2026-06-22T00:46:25.4294422Z         },
2026-06-22T00:46:25.4294722Z         "impl": {
2026-06-22T00:46:25.4295008Z           "complete": true,
2026-06-22T00:46:25.4295390Z           "evidence": [
2026-06-22T00:46:25.4295714Z             {
2026-06-22T00:46:25.4296121Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T00:46:25.4296511Z               "line": 8
2026-06-22T00:46:25.4296793Z             },
2026-06-22T00:46:25.4297145Z             {
2026-06-22T00:46:25.4297469Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T00:46:25.4297849Z               "line": 51
2026-06-22T00:46:25.4298188Z             },
2026-06-22T00:46:25.4298479Z             {
2026-06-22T00:46:25.4298889Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T00:46:25.4299359Z               "line": 82
2026-06-22T00:46:25.4299702Z             },
2026-06-22T00:46:25.4300016Z             {
2026-06-22T00:46:25.4300345Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T00:46:25.4300759Z               "line": 229
2026-06-22T00:46:25.4301069Z             }
2026-06-22T00:46:25.4301336Z           ]
2026-06-22T00:46:25.4301728Z         },
2026-06-22T00:46:25.4302018Z         "int": {
2026-06-22T00:46:25.4302386Z           "complete": false,
2026-06-22T00:46:25.4302720Z           "evidence": []
2026-06-22T00:46:25.4303025Z         },
2026-06-22T00:46:25.4303354Z         "unit": {
2026-06-22T00:46:25.4303646Z           "complete": true,
2026-06-22T00:46:25.4304003Z           "evidence": [
2026-06-22T00:46:25.4304362Z             {
2026-06-22T00:46:25.4304684Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T00:46:25.4305103Z               "line": 249
2026-06-22T00:46:25.4305432Z             },
2026-06-22T00:46:25.4305808Z             {
2026-06-22T00:46:25.4306179Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T00:46:25.4306551Z               "line": 256
2026-06-22T00:46:25.4306929Z             },
2026-06-22T00:46:25.4307229Z             {
2026-06-22T00:46:25.4307570Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T00:46:25.4307948Z               "line": 263
2026-06-22T00:46:25.4308272Z             },
2026-06-22T00:46:25.4308601Z             {
2026-06-22T00:46:25.4308926Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T00:46:25.4309450Z               "line": 270
2026-06-22T00:46:25.4309863Z             },
2026-06-22T00:46:25.4310156Z             {
2026-06-22T00:46:25.4310500Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T00:46:25.4310876Z               "line": 297
2026-06-22T00:46:25.4311163Z             },
2026-06-22T00:46:25.4311525Z             {
2026-06-22T00:46:25.4311973Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T00:46:25.4312432Z               "line": 307
2026-06-22T00:46:25.4312842Z             },
2026-06-22T00:46:25.4313134Z             {
2026-06-22T00:46:25.4313514Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T00:46:25.4313867Z               "line": 317
2026-06-22T00:46:25.4314211Z             },
2026-06-22T00:46:25.4314511Z             {
2026-06-22T00:46:25.4314845Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T00:46:25.4315278Z               "line": 331
2026-06-22T00:46:25.4315595Z             },
2026-06-22T00:46:25.4315905Z             {
2026-06-22T00:46:25.4316240Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T00:46:25.4316606Z               "line": 340
2026-06-22T00:46:25.4316954Z             },
2026-06-22T00:46:25.4317255Z             {
2026-06-22T00:46:25.4317556Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T00:46:25.4317998Z               "line": 348
2026-06-22T00:46:25.4318322Z             }
2026-06-22T00:46:25.4318632Z           ]
2026-06-22T00:46:25.4318928Z         }
2026-06-22T00:46:25.4319394Z       }
2026-06-22T00:46:25.4319739Z     },
2026-06-22T00:46:25.4320033Z     {
2026-06-22T00:46:25.4320351Z       "id": "REQ-CLI-OUTPUT-MARKDOWN",
2026-06-22T00:46:25.4328672Z       "title": "Human-prose COMMAND OUTPUT (not just `--help`) renders the inline Markdown authored in its source strings as terminal styling, never literal markers: `` `code` `` → ANSI cyan, `**bold**` → ANSI bold, `[text](url)` → `text`, markers STRIPPED either way. REQ-CLI-HELP-MARKDOWN only hooked the clap `--help` chokepoint, so command output still printed raw Markdown (audit: `spt how-to` topic text showed `# headers`/backticks, `spt subnet`/`subnet status` hint footers showed stray backticks, the daemon-status `not running` line, the `ENDPOINT_RUN_STARTED` attach hint, and the daemon's `SUBNET_DETACHED` startup line — 13 prose surfaces). The same line-bounded pure `helpfmt::render` is applied at each emit site, color-gated by the OUTPUT STREAM's own tty (`stdout_color` for print/println, the new `stderr_color` for eprintln). HARNESS-SAFETY (binding): color is tty-gated, so an adapter (piped / non-tty / NO_COLOR) gets STRIP mode = zero ANSI + markers removed; every dual-contract MACHINE token on a rendered line (`ENDPOINT_RUN_STARTED:`, `NO_SUCH_TOPIC:`, `SUBNET_DETACHED:`) carries NO Markdown markers, so it survives strip byte-intact — the adapter parse is never perturbed. Pure-machine output (the `<EVENT …>` envelope, bringup parse-tokens SEEDED/BOUND/READY/NO_SEED, `--json`, QR) is NEVER routed through the renderer. The one spt-daemon source string (`SUBNET_DETACHED`, the bin-local renderer is unreachable from the daemon crate) is authored marker-free instead. (v0.12.2)",
2026-06-22T00:46:25.4333056Z       "requiredStages": [
2026-06-22T00:46:25.4333394Z         "impl",
2026-06-22T00:46:25.4333727Z         "unit"
2026-06-22T00:46:25.4334081Z       ],
2026-06-22T00:46:25.4334363Z       "stages": {
2026-06-22T00:46:25.4334744Z         "doc": {
2026-06-22T00:46:25.4335050Z           "complete": false,
2026-06-22T00:46:25.4335418Z           "evidence": []
2026-06-22T00:46:25.4335761Z         },
2026-06-22T00:46:25.4336062Z         "impl": {
2026-06-22T00:46:25.4336417Z           "complete": true,
2026-06-22T00:46:25.4336792Z           "evidence": [
2026-06-22T00:46:25.4337140Z             {
2026-06-22T00:46:25.4337497Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.4337883Z               "line": 141
2026-06-22T00:46:25.4338241Z             },
2026-06-22T00:46:25.4338532Z             {
2026-06-22T00:46:25.4338837Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4339413Z               "line": 1376
2026-06-22T00:46:25.4339742Z             },
2026-06-22T00:46:25.4340076Z             {
2026-06-22T00:46:25.4340386Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4340748Z               "line": 2145
2026-06-22T00:46:25.4341101Z             },
2026-06-22T00:46:25.4341567Z             {
2026-06-22T00:46:25.4341914Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4342442Z               "line": 4368
2026-06-22T00:46:25.4342733Z             },
2026-06-22T00:46:25.4343086Z             {
2026-06-22T00:46:25.4343396Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4343783Z               "line": 4466
2026-06-22T00:46:25.4344117Z             },
2026-06-22T00:46:25.4344401Z             {
2026-06-22T00:46:25.4344795Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4345143Z               "line": 5257
2026-06-22T00:46:25.4345472Z             },
2026-06-22T00:46:25.4345791Z             {
2026-06-22T00:46:25.4346106Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T00:46:25.4346520Z               "line": 39
2026-06-22T00:46:25.4346839Z             }
2026-06-22T00:46:25.4347099Z           ]
2026-06-22T00:46:25.4347494Z         },
2026-06-22T00:46:25.4347775Z         "int": {
2026-06-22T00:46:25.4348143Z           "complete": false,
2026-06-22T00:46:25.4348472Z           "evidence": []
2026-06-22T00:46:25.4348787Z         },
2026-06-22T00:46:25.4349251Z         "unit": {
2026-06-22T00:46:25.4349570Z           "complete": true,
2026-06-22T00:46:25.4355526Z           "evidence": [
2026-06-22T00:46:25.4355798Z             {
2026-06-22T00:46:25.4356047Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4356332Z               "line": 10272
2026-06-22T00:46:25.4356557Z             },
2026-06-22T00:46:25.4356766Z             {
2026-06-22T00:46:25.4356999Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T00:46:25.4357263Z               "line": 281
2026-06-22T00:46:25.4357490Z             },
2026-06-22T00:46:25.4357678Z             {
2026-06-22T00:46:25.4357903Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T00:46:25.4358189Z               "line": 358
2026-06-22T00:46:25.4358412Z             },
2026-06-22T00:46:25.4358618Z             {
2026-06-22T00:46:25.4358871Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T00:46:25.4359237Z               "line": 381
2026-06-22T00:46:25.4359467Z             },
2026-06-22T00:46:25.4359662Z             {
2026-06-22T00:46:25.4359895Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T00:46:25.4360168Z               "line": 395
2026-06-22T00:46:25.4360390Z             }
2026-06-22T00:46:25.4360590Z           ]
2026-06-22T00:46:25.4360787Z         }
2026-06-22T00:46:25.4360976Z       }
2026-06-22T00:46:25.4361173Z     },
2026-06-22T00:46:25.4361364Z     {
2026-06-22T00:46:25.4361563Z       "id": "REQ-CONSENT-1",
2026-06-22T00:46:25.4362620Z       "title": "Consent grant store: capability x subject-agent x target-node rows, enforced at the target node, subnet-settable (replicates as security material near the trust store), revocable; gated-capability ids (remote-exec, instantiate-anywhere) reserved-but-refusing; v1 consumers are the shell spawn gates (CONTEXT Consent & security gates)",
2026-06-22T00:46:25.4363635Z       "requiredStages": [
2026-06-22T00:46:25.4363863Z         "impl",
2026-06-22T00:46:25.4364063Z         "unit"
2026-06-22T00:46:25.4364269Z       ],
2026-06-22T00:46:25.4364468Z       "stages": {
2026-06-22T00:46:25.4364659Z         "doc": {
2026-06-22T00:46:25.4364880Z           "complete": false,
2026-06-22T00:46:25.4365107Z           "evidence": []
2026-06-22T00:46:25.4365331Z         },
2026-06-22T00:46:25.4365517Z         "impl": {
2026-06-22T00:46:25.4365733Z           "complete": true,
2026-06-22T00:46:25.4365968Z           "evidence": [
2026-06-22T00:46:25.4366192Z             {
2026-06-22T00:46:25.4366434Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T00:46:25.4366710Z               "line": 27
2026-06-22T00:46:25.4366930Z             },
2026-06-22T00:46:25.4367131Z             {
2026-06-22T00:46:25.4367374Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T00:46:25.4367664Z               "line": 75
2026-06-22T00:46:25.4367884Z             },
2026-06-22T00:46:25.4368224Z             {
2026-06-22T00:46:25.4368454Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T00:46:25.4368820Z               "line": 98
2026-06-22T00:46:25.4369139Z             },
2026-06-22T00:46:25.4369341Z             {
2026-06-22T00:46:25.4369578Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T00:46:25.4369855Z               "line": 82
2026-06-22T00:46:25.4370070Z             },
2026-06-22T00:46:25.4370270Z             {
2026-06-22T00:46:25.4370508Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T00:46:25.4370788Z               "line": 109
2026-06-22T00:46:25.4371004Z             },
2026-06-22T00:46:25.4371212Z             {
2026-06-22T00:46:25.4371432Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T00:46:25.4371704Z               "line": 127
2026-06-22T00:46:25.4371924Z             },
2026-06-22T00:46:25.4372128Z             {
2026-06-22T00:46:25.4372362Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T00:46:25.4372643Z               "line": 142
2026-06-22T00:46:25.4372863Z             },
2026-06-22T00:46:25.4373062Z             {
2026-06-22T00:46:25.4373289Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4373560Z               "line": 7048
2026-06-22T00:46:25.4373794Z             }
2026-06-22T00:46:25.4373984Z           ]
2026-06-22T00:46:25.4374176Z         },
2026-06-22T00:46:25.4374356Z         "int": {
2026-06-22T00:46:25.4374576Z           "complete": false,
2026-06-22T00:46:25.4374815Z           "evidence": []
2026-06-22T00:46:25.4375033Z         },
2026-06-22T00:46:25.4375229Z         "unit": {
2026-06-22T00:46:25.4375440Z           "complete": true,
2026-06-22T00:46:25.4375682Z           "evidence": [
2026-06-22T00:46:25.4375906Z             {
2026-06-22T00:46:25.4376152Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T00:46:25.4376437Z               "line": 334
2026-06-22T00:46:25.4376661Z             },
2026-06-22T00:46:25.4376861Z             {
2026-06-22T00:46:25.4377109Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T00:46:25.4377391Z               "line": 380
2026-06-22T00:46:25.4377619Z             },
2026-06-22T00:46:25.4377819Z             {
2026-06-22T00:46:25.4378059Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T00:46:25.4378345Z               "line": 391
2026-06-22T00:46:25.4378562Z             },
2026-06-22T00:46:25.4378761Z             {
2026-06-22T00:46:25.4379076Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T00:46:25.4379357Z               "line": 165
2026-06-22T00:46:25.4379581Z             },
2026-06-22T00:46:25.4379790Z             {
2026-06-22T00:46:25.4380015Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T00:46:25.4380296Z               "line": 184
2026-06-22T00:46:25.4380501Z             },
2026-06-22T00:46:25.4380700Z             {
2026-06-22T00:46:25.4380940Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T00:46:25.4381222Z               "line": 204
2026-06-22T00:46:25.4381439Z             },
2026-06-22T00:46:25.4381640Z             {
2026-06-22T00:46:25.4381869Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4382136Z               "line": 8334
2026-06-22T00:46:25.4382354Z             }
2026-06-22T00:46:25.4382546Z           ]
2026-06-22T00:46:25.4382731Z         }
2026-06-22T00:46:25.4382922Z       }
2026-06-22T00:46:25.4383118Z     },
2026-06-22T00:46:25.4383313Z     {
2026-06-22T00:46:25.4383523Z       "id": "REQ-CONSENT-2",
2026-06-22T00:46:25.4384522Z       "title": "Interactive consent escalation: an ungated high-risk action routes a consent prompt to the user's most-recently-active session; allow-once / allow-always (writes a grant) / deny; pre-consent flags (can_shutdown, shell_wake_spawn_anywhere) author grants via manifest/settings (CONTEXT Consent & security gates)",
2026-06-22T00:46:25.4385469Z       "requiredStages": [
2026-06-22T00:46:25.4385705Z         "impl",
2026-06-22T00:46:25.4386024Z         "unit"
2026-06-22T00:46:25.4386218Z       ],
2026-06-22T00:46:25.4386423Z       "stages": {
2026-06-22T00:46:25.4386740Z         "doc": {
2026-06-22T00:46:25.4386954Z           "complete": false,
2026-06-22T00:46:25.4387187Z           "evidence": []
2026-06-22T00:46:25.4387412Z         },
2026-06-22T00:46:25.4387608Z         "impl": {
2026-06-22T00:46:25.4387822Z           "complete": true,
2026-06-22T00:46:25.4388046Z           "evidence": [
2026-06-22T00:46:25.4388257Z             {
2026-06-22T00:46:25.4388504Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T00:46:25.4388790Z               "line": 140
2026-06-22T00:46:25.4389122Z             },
2026-06-22T00:46:25.4389321Z             {
2026-06-22T00:46:25.4389559Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T00:46:25.4389831Z               "line": 165
2026-06-22T00:46:25.4390050Z             },
2026-06-22T00:46:25.4390241Z             {
2026-06-22T00:46:25.4390480Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T00:46:25.4390770Z               "line": 199
2026-06-22T00:46:25.4390980Z             },
2026-06-22T00:46:25.4391195Z             {
2026-06-22T00:46:25.4391425Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T00:46:25.4391705Z               "line": 241
2026-06-22T00:46:25.4391923Z             },
2026-06-22T00:46:25.4392114Z             {
2026-06-22T00:46:25.4392352Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T00:46:25.4392623Z               "line": 269
2026-06-22T00:46:25.4392834Z             },
2026-06-22T00:46:25.4393025Z             {
2026-06-22T00:46:25.4393267Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T00:46:25.4393540Z               "line": 300
2026-06-22T00:46:25.4393792Z             },
2026-06-22T00:46:25.4393998Z             {
2026-06-22T00:46:25.4394220Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4394494Z               "line": 6839
2026-06-22T00:46:25.4394724Z             },
2026-06-22T00:46:25.4394928Z             {
2026-06-22T00:46:25.4395147Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4395420Z               "line": 6897
2026-06-22T00:46:25.4395645Z             }
2026-06-22T00:46:25.4395844Z           ]
2026-06-22T00:46:25.4396044Z         },
2026-06-22T00:46:25.4396250Z         "int": {
2026-06-22T00:46:25.4396463Z           "complete": false,
2026-06-22T00:46:25.4396692Z           "evidence": []
2026-06-22T00:46:25.4396913Z         },
2026-06-22T00:46:25.4397106Z         "unit": {
2026-06-22T00:46:25.4397319Z           "complete": true,
2026-06-22T00:46:25.4397543Z           "evidence": [
2026-06-22T00:46:25.4397761Z             {
2026-06-22T00:46:25.4398000Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T00:46:25.4398278Z               "line": 419
2026-06-22T00:46:25.4398493Z             },
2026-06-22T00:46:25.4398692Z             {
2026-06-22T00:46:25.4398930Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T00:46:25.4399321Z               "line": 436
2026-06-22T00:46:25.4399545Z             },
2026-06-22T00:46:25.4399749Z             {
2026-06-22T00:46:25.4399994Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T00:46:25.4400271Z               "line": 472
2026-06-22T00:46:25.4400496Z             },
2026-06-22T00:46:25.4400696Z             {
2026-06-22T00:46:25.4400939Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T00:46:25.4401050Z               "line": 516
2026-06-22T00:46:25.4401154Z             },
2026-06-22T00:46:25.4401258Z             {
2026-06-22T00:46:25.4401383Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4401497Z               "line": 9614
2026-06-22T00:46:25.4401597Z             },
2026-06-22T00:46:25.4401703Z             {
2026-06-22T00:46:25.4401826Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4401931Z               "line": 9696
2026-06-22T00:46:25.4402037Z             }
2026-06-22T00:46:25.4402136Z           ]
2026-06-22T00:46:25.4402333Z         }
2026-06-22T00:46:25.4402436Z       }
2026-06-22T00:46:25.4402540Z     },
2026-06-22T00:46:25.4402732Z     {
2026-06-22T00:46:25.4402845Z       "id": "REQ-CONSENT-3",
2026-06-22T00:46:25.4404756Z       "title": "Per-capability approval gates (class-keyed): the require_approval enum may ride INDIVIDUAL [shell.capabilities] entries — gating the dangerous ACT, not just the spawn — with an optional class_key scoping the grant qualifier finer than the capability id ((owner endpoint x device class x node); a remembered HID-class attach grant never authorizes a storage-class attach). Reuses the grant store + interactive escalation + tighten-only floor (REQ-CONSENT-1/2 plumbing). Spawn gates govern EXISTENCE; capability gates govern ACTS — an explicitly distinct invariant (CONTEXT:283, ratified 2026-06-11 Gateway grill).",
2026-06-22T00:46:25.4404890Z       "requiredStages": [
2026-06-22T00:46:25.4404989Z         "doc",
2026-06-22T00:46:25.4405093Z         "impl",
2026-06-22T00:46:25.4405202Z         "unit",
2026-06-22T00:46:25.4405313Z         "int"
2026-06-22T00:46:25.4405421Z       ],
2026-06-22T00:46:25.4405531Z       "stages": {
2026-06-22T00:46:25.4405642Z         "doc": {
2026-06-22T00:46:25.4405760Z           "complete": true,
2026-06-22T00:46:25.4405871Z           "evidence": [
2026-06-22T00:46:25.4405966Z             {
2026-06-22T00:46:25.4406084Z               "path": "CONTEXT.md",
2026-06-22T00:46:25.4406205Z               "line": 304
2026-06-22T00:46:25.4406304Z             }
2026-06-22T00:46:25.4406409Z           ]
2026-06-22T00:46:25.4406514Z         },
2026-06-22T00:46:25.4406614Z         "impl": {
2026-06-22T00:46:25.4406723Z           "complete": true,
2026-06-22T00:46:25.4406834Z           "evidence": [
2026-06-22T00:46:25.4406932Z             {
2026-06-22T00:46:25.4407087Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T00:46:25.4407382Z               "line": 123
2026-06-22T00:46:25.4407609Z             },
2026-06-22T00:46:25.4407819Z             {
2026-06-22T00:46:25.4408079Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T00:46:25.4408370Z               "line": 162
2026-06-22T00:46:25.4408589Z             },
2026-06-22T00:46:25.4408794Z             {
2026-06-22T00:46:25.4409266Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T00:46:25.4409552Z               "line": 291
2026-06-22T00:46:25.4409767Z             },
2026-06-22T00:46:25.4409973Z             {
2026-06-22T00:46:25.4410223Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.4410508Z               "line": 574
2026-06-22T00:46:25.4410728Z             },
2026-06-22T00:46:25.4410927Z             {
2026-06-22T00:46:25.4411170Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.4411456Z               "line": 824
2026-06-22T00:46:25.4411671Z             },
2026-06-22T00:46:25.4411861Z             {
2026-06-22T00:46:25.4412124Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4412420Z               "line": 6965
2026-06-22T00:46:25.4412639Z             }
2026-06-22T00:46:25.4412845Z           ]
2026-06-22T00:46:25.4413048Z         },
2026-06-22T00:46:25.4413239Z         "int": {
2026-06-22T00:46:25.4413458Z           "complete": true,
2026-06-22T00:46:25.4413691Z           "evidence": [
2026-06-22T00:46:25.4413907Z             {
2026-06-22T00:46:25.4414165Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-22T00:46:25.4414455Z               "line": 16
2026-06-22T00:46:25.4414664Z             }
2026-06-22T00:46:25.4414856Z           ]
2026-06-22T00:46:25.4415056Z         },
2026-06-22T00:46:25.4415260Z         "unit": {
2026-06-22T00:46:25.4415488Z           "complete": true,
2026-06-22T00:46:25.4415729Z           "evidence": [
2026-06-22T00:46:25.4415957Z             {
2026-06-22T00:46:25.4416206Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T00:46:25.4416492Z               "line": 1019
2026-06-22T00:46:25.4416717Z             },
2026-06-22T00:46:25.4417089Z             {
2026-06-22T00:46:25.4417332Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T00:46:25.4417718Z               "line": 1066
2026-06-22T00:46:25.4417928Z             },
2026-06-22T00:46:25.4418127Z             {
2026-06-22T00:46:25.4418374Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.4418663Z               "line": 1394
2026-06-22T00:46:25.4418877Z             }
2026-06-22T00:46:25.4419177Z           ]
2026-06-22T00:46:25.4419373Z         }
2026-06-22T00:46:25.4419574Z       }
2026-06-22T00:46:25.4419755Z     },
2026-06-22T00:46:25.4419966Z     {
2026-06-22T00:46:25.4420189Z       "id": "REQ-CONV-1",
2026-06-22T00:46:25.4421716Z       "title": "Peer address seeding, both cold starts: durable peer-addrs.json (identity dir) maps peer pubkey → last-known dialable address; the pump's resolver consults it FIRST with id-only discovery fallback on miss or dial failure (a stale addr never strands a peer); written by the pairing ceremony (both sides, from the live connection) and by the pump on successful connect; post-join first sync and post-restart resync converge in seconds, not ~1 min (M8 decisions 14, 20)",
2026-06-22T00:46:25.4423046Z       "requiredStages": [
2026-06-22T00:46:25.4423275Z         "impl",
2026-06-22T00:46:25.4423486Z         "unit"
2026-06-22T00:46:25.4423693Z       ],
2026-06-22T00:46:25.4423894Z       "stages": {
2026-06-22T00:46:25.4424100Z         "doc": {
2026-06-22T00:46:25.4424318Z           "complete": false,
2026-06-22T00:46:25.4424557Z           "evidence": []
2026-06-22T00:46:25.4424796Z         },
2026-06-22T00:46:25.4425006Z         "impl": {
2026-06-22T00:46:25.4425215Z           "complete": true,
2026-06-22T00:46:25.4425444Z           "evidence": [
2026-06-22T00:46:25.4425659Z             {
2026-06-22T00:46:25.4425924Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T00:46:25.4426213Z               "line": 988
2026-06-22T00:46:25.4426443Z             },
2026-06-22T00:46:25.4426647Z             {
2026-06-22T00:46:25.4426948Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T00:46:25.4427243Z               "line": 94
2026-06-22T00:46:25.4427462Z             },
2026-06-22T00:46:25.4427654Z             {
2026-06-22T00:46:25.4427887Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T00:46:25.4428163Z               "line": 345
2026-06-22T00:46:25.4428387Z             },
2026-06-22T00:46:25.4428589Z             {
2026-06-22T00:46:25.4428824Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T00:46:25.4429214Z               "line": 387
2026-06-22T00:46:25.4429442Z             },
2026-06-22T00:46:25.4429644Z             {
2026-06-22T00:46:25.4429877Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T00:46:25.4430154Z               "line": 472
2026-06-22T00:46:25.4430381Z             },
2026-06-22T00:46:25.4430582Z             {
2026-06-22T00:46:25.4430817Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T00:46:25.4431099Z               "line": 667
2026-06-22T00:46:25.4431311Z             },
2026-06-22T00:46:25.4431506Z             {
2026-06-22T00:46:25.4431752Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T00:46:25.4432038Z               "line": 693
2026-06-22T00:46:25.4432261Z             },
2026-06-22T00:46:25.4432463Z             {
2026-06-22T00:46:25.4432701Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T00:46:25.4432991Z               "line": 369
2026-06-22T00:46:25.4433206Z             },
2026-06-22T00:46:25.4433403Z             {
2026-06-22T00:46:25.4433651Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-22T00:46:25.4433936Z               "line": 19
2026-06-22T00:46:25.4434159Z             }
2026-06-22T00:46:25.4434355Z           ]
2026-06-22T00:46:25.4434554Z         },
2026-06-22T00:46:25.4434755Z         "int": {
2026-06-22T00:46:25.4434970Z           "complete": false,
2026-06-22T00:46:25.4435202Z           "evidence": []
2026-06-22T00:46:25.4435541Z         },
2026-06-22T00:46:25.4435751Z         "unit": {
2026-06-22T00:46:25.4435962Z           "complete": true,
2026-06-22T00:46:25.4436305Z           "evidence": [
2026-06-22T00:46:25.4436527Z             {
2026-06-22T00:46:25.4436773Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T00:46:25.4437284Z               "line": 1263
2026-06-22T00:46:25.4493161Z             },
2026-06-22T00:46:25.4493514Z             {
2026-06-22T00:46:25.4493805Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-22T00:46:25.4494139Z               "line": 108
2026-06-22T00:46:25.4494367Z             },
2026-06-22T00:46:25.4494614Z             {
2026-06-22T00:46:25.4494862Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-22T00:46:25.4495209Z               "line": 134
2026-06-22T00:46:25.4495432Z             },
2026-06-22T00:46:25.4495627Z             {
2026-06-22T00:46:25.4495871Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-22T00:46:25.4496204Z               "line": 144
2026-06-22T00:46:25.4496425Z             }
2026-06-22T00:46:25.4496629Z           ]
2026-06-22T00:46:25.4496829Z         }
2026-06-22T00:46:25.4497026Z       }
2026-06-22T00:46:25.4497215Z     },
2026-06-22T00:46:25.4497412Z     {
2026-06-22T00:46:25.4497609Z       "id": "REQ-CONV-2",
2026-06-22T00:46:25.4499102Z       "title": "Event-driven advertisement: endpoint online/offline transitions (ready-listener start/stop, rest-state transition, perch death) trigger an immediate advertise_local + peer push as a WAKE of the existing pump loop (no second advertisement path — epoch lease + visibility gates ride unchanged); the cadence stays the steady-state floor (M8 decision 15)",
2026-06-22T00:46:25.4500181Z       "requiredStages": [
2026-06-22T00:46:25.4500415Z         "impl",
2026-06-22T00:46:25.4500621Z         "unit"
2026-06-22T00:46:25.4500825Z       ],
2026-06-22T00:46:25.4501021Z       "stages": {
2026-06-22T00:46:25.4501226Z         "doc": {
2026-06-22T00:46:25.4501450Z           "complete": false,
2026-06-22T00:46:25.4501688Z           "evidence": []
2026-06-22T00:46:25.4501908Z         },
2026-06-22T00:46:25.4502118Z         "impl": {
2026-06-22T00:46:25.4502332Z           "complete": true,
2026-06-22T00:46:25.4502566Z           "evidence": [
2026-06-22T00:46:25.4502784Z             {
2026-06-22T00:46:25.4503044Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T00:46:25.4503334Z               "line": 409
2026-06-22T00:46:25.4503555Z             },
2026-06-22T00:46:25.4503755Z             {
2026-06-22T00:46:25.4504021Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T00:46:25.4504322Z               "line": 119
2026-06-22T00:46:25.4504536Z             },
2026-06-22T00:46:25.4504733Z             {
2026-06-22T00:46:25.4504985Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.4505270Z               "line": 841
2026-06-22T00:46:25.4505483Z             },
2026-06-22T00:46:25.4505677Z             {
2026-06-22T00:46:25.4505934Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.4506235Z               "line": 852
2026-06-22T00:46:25.4506446Z             },
2026-06-22T00:46:25.4506641Z             {
2026-06-22T00:46:25.4506874Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T00:46:25.4507155Z               "line": 334
2026-06-22T00:46:25.4507370Z             },
2026-06-22T00:46:25.4507557Z             {
2026-06-22T00:46:25.4507785Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4508046Z               "line": 3074
2026-06-22T00:46:25.4508271Z             },
2026-06-22T00:46:25.4508466Z             {
2026-06-22T00:46:25.4508686Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4509024Z               "line": 3090
2026-06-22T00:46:25.4509239Z             },
2026-06-22T00:46:25.4509438Z             {
2026-06-22T00:46:25.4509658Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4509925Z               "line": 3170
2026-06-22T00:46:25.4510434Z             }
2026-06-22T00:46:25.4510637Z           ]
2026-06-22T00:46:25.4510942Z         },
2026-06-22T00:46:25.4511133Z         "int": {
2026-06-22T00:46:25.4511351Z           "complete": false,
2026-06-22T00:46:25.4511595Z           "evidence": []
2026-06-22T00:46:25.4511806Z         },
2026-06-22T00:46:25.4512000Z         "unit": {
2026-06-22T00:46:25.4512220Z           "complete": true,
2026-06-22T00:46:25.4512454Z           "evidence": [
2026-06-22T00:46:25.4512669Z             {
2026-06-22T00:46:25.4512912Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T00:46:25.4513188Z               "line": 889
2026-06-22T00:46:25.4513411Z             },
2026-06-22T00:46:25.4513608Z             {
2026-06-22T00:46:25.4513848Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T00:46:25.4514129Z               "line": 1014
2026-06-22T00:46:25.4514349Z             },
2026-06-22T00:46:25.4514552Z             {
2026-06-22T00:46:25.4514815Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T00:46:25.4515101Z               "line": 215
2026-06-22T00:46:25.4515331Z             }
2026-06-22T00:46:25.4515531Z           ]
2026-06-22T00:46:25.4515726Z         }
2026-06-22T00:46:25.4515920Z       }
2026-06-22T00:46:25.4516118Z     },
2026-06-22T00:46:25.4516309Z     {
2026-06-22T00:46:25.4516514Z       "id": "REQ-DAEMON-1",
2026-06-22T00:46:25.4516828Z       "title": "One per-machine spt-daemon owning all per-machine state",
2026-06-22T00:46:25.4517168Z       "requiredStages": [
2026-06-22T00:46:25.4517391Z         "impl",
2026-06-22T00:46:25.4517592Z         "unit",
2026-06-22T00:46:25.4517792Z         "int"
2026-06-22T00:46:25.4517997Z       ],
2026-06-22T00:46:25.4518194Z       "stages": {
2026-06-22T00:46:25.4518398Z         "doc": {
2026-06-22T00:46:25.4518621Z           "complete": false,
2026-06-22T00:46:25.4518869Z           "evidence": []
2026-06-22T00:46:25.4519146Z         },
2026-06-22T00:46:25.4519340Z         "impl": {
2026-06-22T00:46:25.4519561Z           "complete": true,
2026-06-22T00:46:25.4519785Z           "evidence": [
2026-06-22T00:46:25.4520017Z             {
2026-06-22T00:46:25.4520251Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4520542Z               "line": 229
2026-06-22T00:46:25.4520768Z             },
2026-06-22T00:46:25.4520975Z             {
2026-06-22T00:46:25.4521211Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T00:46:25.4521488Z               "line": 12
2026-06-22T00:46:25.4521698Z             },
2026-06-22T00:46:25.4521893Z             {
2026-06-22T00:46:25.4522132Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T00:46:25.4522418Z               "line": 16
2026-06-22T00:46:25.4522638Z             },
2026-06-22T00:46:25.4522828Z             {
2026-06-22T00:46:25.4523061Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T00:46:25.4523348Z               "line": 309
2026-06-22T00:46:25.4523582Z             },
2026-06-22T00:46:25.4523785Z             {
2026-06-22T00:46:25.4524031Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.4524327Z               "line": 24
2026-06-22T00:46:25.4524536Z             },
2026-06-22T00:46:25.4524736Z             {
2026-06-22T00:46:25.4524975Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.4525262Z               "line": 262
2026-06-22T00:46:25.4525480Z             },
2026-06-22T00:46:25.4525685Z             {
2026-06-22T00:46:25.4525929Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.4526206Z               "line": 279
2026-06-22T00:46:25.4526423Z             },
2026-06-22T00:46:25.4526622Z             {
2026-06-22T00:46:25.4526955Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.4527237Z               "line": 356
2026-06-22T00:46:25.4527452Z             },
2026-06-22T00:46:25.4527650Z             {
2026-06-22T00:46:25.4527880Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.4528280Z               "line": 670
2026-06-22T00:46:25.4528491Z             },
2026-06-22T00:46:25.4528782Z             {
2026-06-22T00:46:25.4529083Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-22T00:46:25.4529372Z               "line": 15
2026-06-22T00:46:25.4529586Z             },
2026-06-22T00:46:25.4529787Z             {
2026-06-22T00:46:25.4530026Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T00:46:25.4530307Z               "line": 241
2026-06-22T00:46:25.4530525Z             },
2026-06-22T00:46:25.4530726Z             {
2026-06-22T00:46:25.4530951Z               "path": "crates/spt/src/api/live.rs",
2026-06-22T00:46:25.4531226Z               "line": 13
2026-06-22T00:46:25.4531440Z             },
2026-06-22T00:46:25.4531645Z             {
2026-06-22T00:46:25.4531886Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.4532166Z               "line": 382
2026-06-22T00:46:25.4532396Z             },
2026-06-22T00:46:25.4532588Z             {
2026-06-22T00:46:25.4532820Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.4533101Z               "line": 494
2026-06-22T00:46:25.4533321Z             }
2026-06-22T00:46:25.4533513Z           ]
2026-06-22T00:46:25.4533707Z         },
2026-06-22T00:46:25.4533917Z         "int": {
2026-06-22T00:46:25.4534132Z           "complete": true,
2026-06-22T00:46:25.4534369Z           "evidence": [
2026-06-22T00:46:25.4534587Z             {
2026-06-22T00:46:25.4534878Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-22T00:46:25.4535206Z               "line": 2
2026-06-22T00:46:25.4535411Z             },
2026-06-22T00:46:25.4535606Z             {
2026-06-22T00:46:25.4535893Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-22T00:46:25.4536221Z               "line": 16
2026-06-22T00:46:25.4536432Z             },
2026-06-22T00:46:25.4536627Z             {
2026-06-22T00:46:25.4536893Z               "path": "crates/spt/tests/live_bind_firsthost_e2e.rs",
2026-06-22T00:46:25.4537196Z               "line": 12
2026-06-22T00:46:25.4537416Z             },
2026-06-22T00:46:25.4537615Z             {
2026-06-22T00:46:25.4537863Z               "path": "crates/spt/tests/live_firsthost_e2e.rs",
2026-06-22T00:46:25.4538159Z               "line": 12
2026-06-22T00:46:25.4538374Z             },
2026-06-22T00:46:25.4538574Z             {
2026-06-22T00:46:25.4538831Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-22T00:46:25.4539198Z               "line": 44
2026-06-22T00:46:25.4539431Z             }
2026-06-22T00:46:25.4539633Z           ]
2026-06-22T00:46:25.4539826Z         },
2026-06-22T00:46:25.4540028Z         "unit": {
2026-06-22T00:46:25.4540251Z           "complete": true,
2026-06-22T00:46:25.4540480Z           "evidence": [
2026-06-22T00:46:25.4540700Z             {
2026-06-22T00:46:25.4540943Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T00:46:25.4541215Z               "line": 285
2026-06-22T00:46:25.4541433Z             },
2026-06-22T00:46:25.4541629Z             {
2026-06-22T00:46:25.4541869Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T00:46:25.4542157Z               "line": 293
2026-06-22T00:46:25.4542379Z             },
2026-06-22T00:46:25.4542571Z             {
2026-06-22T00:46:25.4542813Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T00:46:25.4543095Z               "line": 309
2026-06-22T00:46:25.4543308Z             },
2026-06-22T00:46:25.4543500Z             {
2026-06-22T00:46:25.4543743Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T00:46:25.4544019Z               "line": 317
2026-06-22T00:46:25.4544229Z             },
2026-06-22T00:46:25.4544426Z             {
2026-06-22T00:46:25.4544664Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T00:46:25.4544957Z               "line": 659
2026-06-22T00:46:25.4545170Z             },
2026-06-22T00:46:25.4545480Z             {
2026-06-22T00:46:25.4545719Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T00:46:25.4546100Z               "line": 729
2026-06-22T00:46:25.4546310Z             },
2026-06-22T00:46:25.4546505Z             {
2026-06-22T00:46:25.4546748Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.4547035Z               "line": 1211
2026-06-22T00:46:25.4547255Z             },
2026-06-22T00:46:25.4547449Z             {
2026-06-22T00:46:25.4547690Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.4547966Z               "line": 1248
2026-06-22T00:46:25.4548180Z             },
2026-06-22T00:46:25.4548381Z             {
2026-06-22T00:46:25.4548624Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.4548906Z               "line": 1271
2026-06-22T00:46:25.4549207Z             },
2026-06-22T00:46:25.4549410Z             {
2026-06-22T00:46:25.4549653Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.4549940Z               "line": 1300
2026-06-22T00:46:25.4550175Z             },
2026-06-22T00:46:25.4550372Z             {
2026-06-22T00:46:25.4550607Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.4550888Z               "line": 1348
2026-06-22T00:46:25.4551108Z             },
2026-06-22T00:46:25.4551312Z             {
2026-06-22T00:46:25.4551550Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.4551823Z               "line": 1391
2026-06-22T00:46:25.4552057Z             },
2026-06-22T00:46:25.4552261Z             {
2026-06-22T00:46:25.4552499Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-22T00:46:25.4552775Z               "line": 106
2026-06-22T00:46:25.4552996Z             },
2026-06-22T00:46:25.4553202Z             {
2026-06-22T00:46:25.4553426Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-22T00:46:25.4553703Z               "line": 132
2026-06-22T00:46:25.4553926Z             },
2026-06-22T00:46:25.4554127Z             {
2026-06-22T00:46:25.4554376Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T00:46:25.4554681Z               "line": 530
2026-06-22T00:46:25.4554894Z             }
2026-06-22T00:46:25.4555094Z           ]
2026-06-22T00:46:25.4555291Z         }
2026-06-22T00:46:25.4555490Z       }
2026-06-22T00:46:25.4555675Z     },
2026-06-22T00:46:25.4555873Z     {
2026-06-22T00:46:25.4556073Z       "id": "REQ-DAEMON-2",
2026-06-22T00:46:25.4556351Z       "title": "Broker/brain split for seamless self-update",
2026-06-22T00:46:25.4556660Z       "requiredStages": [
2026-06-22T00:46:25.4556885Z         "impl",
2026-06-22T00:46:25.4557094Z         "unit",
2026-06-22T00:46:25.4557294Z         "int"
2026-06-22T00:46:25.4557486Z       ],
2026-06-22T00:46:25.4557675Z       "stages": {
2026-06-22T00:46:25.4557891Z         "doc": {
2026-06-22T00:46:25.4558103Z           "complete": true,
2026-06-22T00:46:25.4558340Z           "evidence": [
2026-06-22T00:46:25.4558560Z             {
2026-06-22T00:46:25.4558836Z               "path": "docs/TWO-HOST-RUNBOOK.md",
2026-06-22T00:46:25.4559350Z               "line": 250
2026-06-22T00:46:25.4559570Z             }
2026-06-22T00:46:25.4559762Z           ]
2026-06-22T00:46:25.4559961Z         },
2026-06-22T00:46:25.4560161Z         "impl": {
2026-06-22T00:46:25.4560377Z           "complete": true,
2026-06-22T00:46:25.4560615Z           "evidence": [
2026-06-22T00:46:25.4560829Z             {
2026-06-22T00:46:25.4561066Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T00:46:25.4561338Z               "line": 23
2026-06-22T00:46:25.4561557Z             },
2026-06-22T00:46:25.4561758Z             {
2026-06-22T00:46:25.4562002Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T00:46:25.4562277Z               "line": 922
2026-06-22T00:46:25.4562497Z             },
2026-06-22T00:46:25.4562702Z             {
2026-06-22T00:46:25.4562936Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T00:46:25.4563330Z               "line": 963
2026-06-22T00:46:25.4563551Z             },
2026-06-22T00:46:25.4563757Z             {
2026-06-22T00:46:25.4564109Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T00:46:25.4564391Z               "line": 1199
2026-06-22T00:46:25.4564611Z             },
2026-06-22T00:46:25.4564816Z             {
2026-06-22T00:46:25.4565040Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.4565316Z               "line": 32
2026-06-22T00:46:25.4565537Z             },
2026-06-22T00:46:25.4565740Z             {
2026-06-22T00:46:25.4565969Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.4566244Z               "line": 1251
2026-06-22T00:46:25.4566467Z             },
2026-06-22T00:46:25.4566657Z             {
2026-06-22T00:46:25.4566891Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.4567169Z               "line": 2087
2026-06-22T00:46:25.4567387Z             },
2026-06-22T00:46:25.4567583Z             {
2026-06-22T00:46:25.4567822Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.4568099Z               "line": 2374
2026-06-22T00:46:25.4568322Z             },
2026-06-22T00:46:25.4568521Z             {
2026-06-22T00:46:25.4568764Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-22T00:46:25.4569110Z               "line": 11
2026-06-22T00:46:25.4569339Z             },
2026-06-22T00:46:25.4569538Z             {
2026-06-22T00:46:25.4569778Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.4570059Z               "line": 153
2026-06-22T00:46:25.4570268Z             },
2026-06-22T00:46:25.4570473Z             {
2026-06-22T00:46:25.4570703Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.4570981Z               "line": 343
2026-06-22T00:46:25.4571203Z             },
2026-06-22T00:46:25.4571407Z             {
2026-06-22T00:46:25.4571636Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T00:46:25.4571927Z               "line": 13
2026-06-22T00:46:25.4572155Z             },
2026-06-22T00:46:25.4572352Z             {
2026-06-22T00:46:25.4572600Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T00:46:25.4579765Z               "line": 27
2026-06-22T00:46:25.4580057Z             },
2026-06-22T00:46:25.4580304Z             {
2026-06-22T00:46:25.4580562Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T00:46:25.4580858Z               "line": 173
2026-06-22T00:46:25.4581091Z             },
2026-06-22T00:46:25.4581286Z             {
2026-06-22T00:46:25.4581536Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T00:46:25.4581817Z               "line": 682
2026-06-22T00:46:25.4582044Z             },
2026-06-22T00:46:25.4582240Z             {
2026-06-22T00:46:25.4582478Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T00:46:25.4582754Z               "line": 903
2026-06-22T00:46:25.4582964Z             },
2026-06-22T00:46:25.4583174Z             {
2026-06-22T00:46:25.4583393Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T00:46:25.4583679Z               "line": 1050
2026-06-22T00:46:25.4583879Z             },
2026-06-22T00:46:25.4584081Z             {
2026-06-22T00:46:25.4584312Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T00:46:25.4584591Z               "line": 1139
2026-06-22T00:46:25.4584806Z             },
2026-06-22T00:46:25.4585006Z             {
2026-06-22T00:46:25.4585244Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T00:46:25.4585516Z               "line": 1261
2026-06-22T00:46:25.4585731Z             },
2026-06-22T00:46:25.4585931Z             {
2026-06-22T00:46:25.4586165Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-22T00:46:25.4586508Z               "line": 10
2026-06-22T00:46:25.4586723Z             }
2026-06-22T00:46:25.4586924Z           ]
2026-06-22T00:46:25.4587118Z         },
2026-06-22T00:46:25.4587312Z         "int": {
2026-06-22T00:46:25.4587674Z           "complete": true,
2026-06-22T00:46:25.4587902Z           "evidence": [
2026-06-22T00:46:25.4588212Z             {
2026-06-22T00:46:25.4588454Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T00:46:25.4588736Z               "line": 17
2026-06-22T00:46:25.4589031Z             },
2026-06-22T00:46:25.4589257Z             {
2026-06-22T00:46:25.4589496Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-22T00:46:25.4589788Z               "line": 90
2026-06-22T00:46:25.4590006Z             },
2026-06-22T00:46:25.4590202Z             {
2026-06-22T00:46:25.4590444Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-22T00:46:25.4590730Z               "line": 110
2026-06-22T00:46:25.4590946Z             },
2026-06-22T00:46:25.4591146Z             {
2026-06-22T00:46:25.4591388Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-22T00:46:25.4591670Z               "line": 186
2026-06-22T00:46:25.4591893Z             },
2026-06-22T00:46:25.4592081Z             {
2026-06-22T00:46:25.4592314Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-22T00:46:25.4592599Z               "line": 309
2026-06-22T00:46:25.4592815Z             },
2026-06-22T00:46:25.4593009Z             {
2026-06-22T00:46:25.4593252Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-22T00:46:25.4593528Z               "line": 128
2026-06-22T00:46:25.4593748Z             },
2026-06-22T00:46:25.4593943Z             {
2026-06-22T00:46:25.4594082Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-22T00:46:25.4594191Z               "line": 59
2026-06-22T00:46:25.4594283Z             }
2026-06-22T00:46:25.4594383Z           ]
2026-06-22T00:46:25.4594482Z         },
2026-06-22T00:46:25.4594587Z         "unit": {
2026-06-22T00:46:25.4594698Z           "complete": true,
2026-06-22T00:46:25.4594801Z           "evidence": [
2026-06-22T00:46:25.4594896Z             {
2026-06-22T00:46:25.4595038Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-22T00:46:25.4595147Z               "line": 62
2026-06-22T00:46:25.4595237Z             },
2026-06-22T00:46:25.4595343Z             {
2026-06-22T00:46:25.4595494Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-22T00:46:25.4595600Z               "line": 76
2026-06-22T00:46:25.4595700Z             },
2026-06-22T00:46:25.4595804Z             {
2026-06-22T00:46:25.4595934Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-22T00:46:25.4596038Z               "line": 88
2026-06-22T00:46:25.4596133Z             },
2026-06-22T00:46:25.4596249Z             {
2026-06-22T00:46:25.4596405Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T00:46:25.4596510Z               "line": 347
2026-06-22T00:46:25.4596616Z             },
2026-06-22T00:46:25.4596715Z             {
2026-06-22T00:46:25.4596854Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T00:46:25.4596963Z               "line": 901
2026-06-22T00:46:25.4597059Z             },
2026-06-22T00:46:25.4597164Z             {
2026-06-22T00:46:25.4597302Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T00:46:25.4597421Z               "line": 909
2026-06-22T00:46:25.4597513Z             },
2026-06-22T00:46:25.4597621Z             {
2026-06-22T00:46:25.4597758Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T00:46:25.4597854Z               "line": 926
2026-06-22T00:46:25.4597957Z             },
2026-06-22T00:46:25.4598056Z             {
2026-06-22T00:46:25.4598185Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T00:46:25.4598295Z               "line": 1035
2026-06-22T00:46:25.4598399Z             },
2026-06-22T00:46:25.4598496Z             {
2026-06-22T00:46:25.4598638Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T00:46:25.4598743Z               "line": 1370
2026-06-22T00:46:25.4598844Z             },
2026-06-22T00:46:25.4599387Z             {
2026-06-22T00:46:25.4599611Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T00:46:25.4599845Z               "line": 1382
2026-06-22T00:46:25.4600036Z             },
2026-06-22T00:46:25.4600136Z             {
2026-06-22T00:46:25.4600297Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-22T00:46:25.4600406Z               "line": 110
2026-06-22T00:46:25.4600515Z             },
2026-06-22T00:46:25.4600613Z             {
2026-06-22T00:46:25.4600762Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-22T00:46:25.4600872Z               "line": 145
2026-06-22T00:46:25.4600971Z             }
2026-06-22T00:46:25.4601072Z           ]
2026-06-22T00:46:25.4601163Z         }
2026-06-22T00:46:25.4601257Z       }
2026-06-22T00:46:25.4601353Z     },
2026-06-22T00:46:25.4601458Z     {
2026-06-22T00:46:25.4601567Z       "id": "REQ-DAEMON-3",
2026-06-22T00:46:25.4601744Z       "title": "Any api invocation auto-starts the daemon if absent",
2026-06-22T00:46:25.4601863Z       "requiredStages": [
2026-06-22T00:46:25.4601963Z         "impl",
2026-06-22T00:46:25.4602069Z         "unit",
2026-06-22T00:46:25.4602169Z         "int"
2026-06-22T00:46:25.4602283Z       ],
2026-06-22T00:46:25.4602388Z       "stages": {
2026-06-22T00:46:25.4602488Z         "doc": {
2026-06-22T00:46:25.4602608Z           "complete": false,
2026-06-22T00:46:25.4602713Z           "evidence": []
2026-06-22T00:46:25.4602822Z         },
2026-06-22T00:46:25.4602918Z         "impl": {
2026-06-22T00:46:25.4603042Z           "complete": true,
2026-06-22T00:46:25.4603149Z           "evidence": [
2026-06-22T00:46:25.4603245Z             {
2026-06-22T00:46:25.4603389Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.4603492Z               "line": 14
2026-06-22T00:46:25.4603593Z             },
2026-06-22T00:46:25.4603693Z             {
2026-06-22T00:46:25.4603841Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-22T00:46:25.4603947Z               "line": 11
2026-06-22T00:46:25.4604047Z             },
2026-06-22T00:46:25.4604155Z             {
2026-06-22T00:46:25.4604285Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T00:46:25.4604399Z               "line": 305
2026-06-22T00:46:25.4604498Z             },
2026-06-22T00:46:25.4604596Z             {
2026-06-22T00:46:25.4604723Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4604828Z               "line": 1956
2026-06-22T00:46:25.4604934Z             },
2026-06-22T00:46:25.4605032Z             {
2026-06-22T00:46:25.4605157Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4605272Z               "line": 4235
2026-06-22T00:46:25.4605366Z             },
2026-06-22T00:46:25.4605470Z             {
2026-06-22T00:46:25.4605589Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4605702Z               "line": 4256
2026-06-22T00:46:25.4605802Z             }
2026-06-22T00:46:25.4605912Z           ]
2026-06-22T00:46:25.4606012Z         },
2026-06-22T00:46:25.4606112Z         "int": {
2026-06-22T00:46:25.4606241Z           "complete": true,
2026-06-22T00:46:25.4606397Z           "evidence": [
2026-06-22T00:46:25.4606504Z             {
2026-06-22T00:46:25.4606650Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T00:46:25.4606751Z               "line": 49
2026-06-22T00:46:25.4606856Z             },
2026-06-22T00:46:25.4606956Z             {
2026-06-22T00:46:25.4607099Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T00:46:25.4607208Z               "line": 487
2026-06-22T00:46:25.4607318Z             }
2026-06-22T00:46:25.4607419Z           ]
2026-06-22T00:46:25.4607523Z         },
2026-06-22T00:46:25.4607628Z         "unit": {
2026-06-22T00:46:25.4607744Z           "complete": true,
2026-06-22T00:46:25.4607857Z           "evidence": [
2026-06-22T00:46:25.4607962Z             {
2026-06-22T00:46:25.4608107Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.4608214Z               "line": 1553
2026-06-22T00:46:25.4608318Z             },
2026-06-22T00:46:25.4608498Z             {
2026-06-22T00:46:25.4608635Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4608813Z               "line": 10715
2026-06-22T00:46:25.4608917Z             }
2026-06-22T00:46:25.4609089Z           ]
2026-06-22T00:46:25.4609189Z         }
2026-06-22T00:46:25.4609293Z       }
2026-06-22T00:46:25.4609394Z     },
2026-06-22T00:46:25.4609499Z     {
2026-06-22T00:46:25.4609613Z       "id": "REQ-DAEMON-4",
2026-06-22T00:46:25.4609757Z       "title": "Honor every KNOWN-HAZARDS invariant",
2026-06-22T00:46:25.4609871Z       "requiredStages": [
2026-06-22T00:46:25.4609976Z         "impl",
2026-06-22T00:46:25.4610076Z         "unit",
2026-06-22T00:46:25.4610176Z         "int"
2026-06-22T00:46:25.4610281Z       ],
2026-06-22T00:46:25.4610387Z       "stages": {
2026-06-22T00:46:25.4610490Z         "doc": {
2026-06-22T00:46:25.4610601Z           "complete": false,
2026-06-22T00:46:25.4610706Z           "evidence": []
2026-06-22T00:46:25.4610805Z         },
2026-06-22T00:46:25.4610913Z         "impl": {
2026-06-22T00:46:25.4611023Z           "complete": true,
2026-06-22T00:46:25.4611140Z           "evidence": [
2026-06-22T00:46:25.4611235Z             {
2026-06-22T00:46:25.4611380Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T00:46:25.4611488Z               "line": 464
2026-06-22T00:46:25.4611589Z             },
2026-06-22T00:46:25.4611694Z             {
2026-06-22T00:46:25.4611846Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T00:46:25.4611952Z               "line": 529
2026-06-22T00:46:25.4612052Z             },
2026-06-22T00:46:25.4612151Z             {
2026-06-22T00:46:25.4612300Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T00:46:25.4612400Z               "line": 551
2026-06-22T00:46:25.4612504Z             }
2026-06-22T00:46:25.4612601Z           ]
2026-06-22T00:46:25.4612710Z         },
2026-06-22T00:46:25.4612814Z         "int": {
2026-06-22T00:46:25.4612925Z           "complete": true,
2026-06-22T00:46:25.4613028Z           "evidence": [
2026-06-22T00:46:25.4613134Z             {
2026-06-22T00:46:25.4613273Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-22T00:46:25.4613391Z               "line": 42
2026-06-22T00:46:25.4613488Z             }
2026-06-22T00:46:25.4613588Z           ]
2026-06-22T00:46:25.4613686Z         },
2026-06-22T00:46:25.4613785Z         "unit": {
2026-06-22T00:46:25.4613892Z           "complete": true,
2026-06-22T00:46:25.4614001Z           "evidence": [
2026-06-22T00:46:25.4614109Z             {
2026-06-22T00:46:25.4614248Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T00:46:25.4614357Z               "line": 428
2026-06-22T00:46:25.4614454Z             },
2026-06-22T00:46:25.4614554Z             {
2026-06-22T00:46:25.4614696Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T00:46:25.4614802Z               "line": 957
2026-06-22T00:46:25.4614902Z             },
2026-06-22T00:46:25.4615011Z             {
2026-06-22T00:46:25.4615151Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T00:46:25.4615264Z               "line": 1027
2026-06-22T00:46:25.4615369Z             },
2026-06-22T00:46:25.4615461Z             {
2026-06-22T00:46:25.4615602Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T00:46:25.4615707Z               "line": 1057
2026-06-22T00:46:25.4615814Z             },
2026-06-22T00:46:25.4615907Z             {
2026-06-22T00:46:25.4616055Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T00:46:25.4616164Z               "line": 1090
2026-06-22T00:46:25.4616267Z             }
2026-06-22T00:46:25.4616372Z           ]
2026-06-22T00:46:25.4616468Z         }
2026-06-22T00:46:25.4616572Z       }
2026-06-22T00:46:25.4616677Z     },
2026-06-22T00:46:25.4616773Z     {
2026-06-22T00:46:25.4616877Z       "id": "REQ-DAEMON-5",
2026-06-22T00:46:25.4618323Z       "title": "Pump liveness: the peer pump writes a last-tick heartbeat consumed by daemon status / subnet status (decision 23 render legs in REQ-CLI-2/REQ-SUBNET-8); the daemon supervises the pump task — a panic is caught, logged loudly, and the pump restarts with capped backoff (≤5 min), so a 5.9-class death self-heals visibly instead of silently halving the daemon (M8 decision 23; field motivation: hfenduleam 2026-06-07 half-death)",
2026-06-22T00:46:25.4618676Z       "requiredStages": [
2026-06-22T00:46:25.4618779Z         "impl",
2026-06-22T00:46:25.4618888Z         "unit"
2026-06-22T00:46:25.4619049Z       ],
2026-06-22T00:46:25.4619158Z       "stages": {
2026-06-22T00:46:25.4619267Z         "doc": {
2026-06-22T00:46:25.4619373Z           "complete": false,
2026-06-22T00:46:25.4619487Z           "evidence": []
2026-06-22T00:46:25.4619582Z         },
2026-06-22T00:46:25.4619678Z         "impl": {
2026-06-22T00:46:25.4619787Z           "complete": true,
2026-06-22T00:46:25.4619897Z           "evidence": [
2026-06-22T00:46:25.4620012Z             {
2026-06-22T00:46:25.4620163Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T00:46:25.4620288Z               "line": 476
2026-06-22T00:46:25.4620388Z             },
2026-06-22T00:46:25.4620502Z             {
2026-06-22T00:46:25.4620641Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T00:46:25.4620745Z               "line": 769
2026-06-22T00:46:25.4620851Z             },
2026-06-22T00:46:25.4620951Z             {
2026-06-22T00:46:25.4621099Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T00:46:25.4621205Z               "line": 782
2026-06-22T00:46:25.4621308Z             },
2026-06-22T00:46:25.4621402Z             {
2026-06-22T00:46:25.4621546Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T00:46:25.4621663Z               "line": 800
2026-06-22T00:46:25.4621757Z             },
2026-06-22T00:46:25.4621863Z             {
2026-06-22T00:46:25.4622001Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T00:46:25.4622111Z               "line": 841
2026-06-22T00:46:25.4622212Z             }
2026-06-22T00:46:25.4622307Z           ]
2026-06-22T00:46:25.4622406Z         },
2026-06-22T00:46:25.4622507Z         "int": {
2026-06-22T00:46:25.4622612Z           "complete": false,
2026-06-22T00:46:25.4622725Z           "evidence": []
2026-06-22T00:46:25.4622822Z         },
2026-06-22T00:46:25.4622926Z         "unit": {
2026-06-22T00:46:25.4623035Z           "complete": true,
2026-06-22T00:46:25.4623146Z           "evidence": [
2026-06-22T00:46:25.4623246Z             {
2026-06-22T00:46:25.4623394Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T00:46:25.4623504Z               "line": 1189
2026-06-22T00:46:25.4623608Z             },
2026-06-22T00:46:25.4623704Z             {
2026-06-22T00:46:25.4623861Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T00:46:25.4623975Z               "line": 1213
2026-06-22T00:46:25.4624082Z             },
2026-06-22T00:46:25.4624185Z             {
2026-06-22T00:46:25.4624331Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T00:46:25.4624452Z               "line": 1239
2026-06-22T00:46:25.4624561Z             }
2026-06-22T00:46:25.4624670Z           ]
2026-06-22T00:46:25.4624771Z         }
2026-06-22T00:46:25.4624871Z       }
2026-06-22T00:46:25.4624975Z     },
2026-06-22T00:46:25.4625076Z     {
2026-06-22T00:46:25.4625195Z       "id": "REQ-DAEMON-6",
2026-06-22T00:46:25.4627275Z       "title": "Service-aware `daemon start`/`stop`: when an OS service manager has a registered spt-daemon for this user, `spt daemon start` and `spt daemon stop` drive THAT service (so stop doesn't IPC-kill a unit that auto-restart-fights for the broker socket — the kitsubito 2026-06-08 loop). `start` graduates from a `run` alias to a first-class background verb (ensure-up, idempotent, non-blocking); stop routes managed→manager, manual→IPC. Linux=systemd user unit (`systemctl --user start|stop|is-active spt-daemon`, detected by unit-file presence); Windows=no controllable manager (the logon task is boot-only), so start=detached spawn / stop=IPC.",
2026-06-22T00:46:25.4627523Z       "requiredStages": [
2026-06-22T00:46:25.4627629Z         "impl",
2026-06-22T00:46:25.4627823Z         "unit"
2026-06-22T00:46:25.4627929Z       ],
2026-06-22T00:46:25.4628038Z       "stages": {
2026-06-22T00:46:25.4628142Z         "doc": {
2026-06-22T00:46:25.4628268Z           "complete": false,
2026-06-22T00:46:25.4628377Z           "evidence": []
2026-06-22T00:46:25.4628481Z         },
2026-06-22T00:46:25.4628588Z         "impl": {
2026-06-22T00:46:25.4628695Z           "complete": true,
2026-06-22T00:46:25.4628801Z           "evidence": [
2026-06-22T00:46:25.4628903Z             {
2026-06-22T00:46:25.4629130Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.4629236Z               "line": 495
2026-06-22T00:46:25.4629339Z             },
2026-06-22T00:46:25.4629467Z             {
2026-06-22T00:46:25.4629619Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.4629727Z               "line": 526
2026-06-22T00:46:25.4629837Z             },
2026-06-22T00:46:25.4629948Z             {
2026-06-22T00:46:25.4630089Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T00:46:25.4630191Z               "line": 55
2026-06-22T00:46:25.4630295Z             },
2026-06-22T00:46:25.4630399Z             {
2026-06-22T00:46:25.4630543Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T00:46:25.4630647Z               "line": 70
2026-06-22T00:46:25.4630753Z             },
2026-06-22T00:46:25.4630858Z             {
2026-06-22T00:46:25.4630991Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4631106Z               "line": 2020
2026-06-22T00:46:25.4631206Z             },
2026-06-22T00:46:25.4631315Z             {
2026-06-22T00:46:25.4631445Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4631558Z               "line": 2046
2026-06-22T00:46:25.4631659Z             }
2026-06-22T00:46:25.4631770Z           ]
2026-06-22T00:46:25.4631868Z         },
2026-06-22T00:46:25.4631972Z         "int": {
2026-06-22T00:46:25.4632092Z           "complete": false,
2026-06-22T00:46:25.4632199Z           "evidence": []
2026-06-22T00:46:25.4632308Z         },
2026-06-22T00:46:25.4632414Z         "unit": {
2026-06-22T00:46:25.4632533Z           "complete": true,
2026-06-22T00:46:25.4632637Z           "evidence": [
2026-06-22T00:46:25.4632734Z             {
2026-06-22T00:46:25.4632876Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T00:46:25.4632985Z               "line": 288
2026-06-22T00:46:25.4633091Z             },
2026-06-22T00:46:25.4633186Z             {
2026-06-22T00:46:25.4633334Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T00:46:25.4633444Z               "line": 299
2026-06-22T00:46:25.4633548Z             },
2026-06-22T00:46:25.4633658Z             {
2026-06-22T00:46:25.4633796Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T00:46:25.4633910Z               "line": 325
2026-06-22T00:46:25.4634012Z             },
2026-06-22T00:46:25.4634120Z             {
2026-06-22T00:46:25.4634254Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T00:46:25.4634365Z               "line": 351
2026-06-22T00:46:25.4634473Z             }
2026-06-22T00:46:25.4634564Z           ]
2026-06-22T00:46:25.4634670Z         }
2026-06-22T00:46:25.4634768Z       }
2026-06-22T00:46:25.4634877Z     },
2026-06-22T00:46:25.4634982Z     {
2026-06-22T00:46:25.4635093Z       "id": "REQ-DAEMON-7",
2026-06-22T00:46:25.4636523Z       "title": "`daemon run` is foreground-consistent on every platform: the invoking process IS the daemon, blocks until signalled, never auto-detaches or respawns into an invisible background task. The detached/de-elevated background behavior lives ONLY in `start`. Windows: an ELEVATED `daemon run` refuses with guidance (use `start`, or an unelevated shell) instead of respawning detached/de-elevated and vanishing (KH 5.7 preserved — it still never serves elevated).",
2026-06-22T00:46:25.4636638Z       "requiredStages": [
2026-06-22T00:46:25.4636847Z         "impl",
2026-06-22T00:46:25.4636952Z         "unit"
2026-06-22T00:46:25.4637136Z       ],
2026-06-22T00:46:25.4637251Z       "stages": {
2026-06-22T00:46:25.4637354Z         "doc": {
2026-06-22T00:46:25.4637472Z           "complete": false,
2026-06-22T00:46:25.4637564Z           "evidence": []
2026-06-22T00:46:25.4637674Z         },
2026-06-22T00:46:25.4637778Z         "impl": {
2026-06-22T00:46:25.4637889Z           "complete": true,
2026-06-22T00:46:25.4637993Z           "evidence": [
2026-06-22T00:46:25.4638092Z             {
2026-06-22T00:46:25.4638246Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.4638341Z               "line": 545
2026-06-22T00:46:25.4638446Z             },
2026-06-22T00:46:25.4638551Z             {
2026-06-22T00:46:25.4638702Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T00:46:25.4638809Z               "line": 610
2026-06-22T00:46:25.4638917Z             },
2026-06-22T00:46:25.4639128Z             {
2026-06-22T00:46:25.4639270Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T00:46:25.4639390Z               "line": 89
2026-06-22T00:46:25.4639496Z             },
2026-06-22T00:46:25.4639589Z             {
2026-06-22T00:46:25.4639715Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4639820Z               "line": 1957
2026-06-22T00:46:25.4639927Z             }
2026-06-22T00:46:25.4640032Z           ]
2026-06-22T00:46:25.4640137Z         },
2026-06-22T00:46:25.4640235Z         "int": {
2026-06-22T00:46:25.4640354Z           "complete": false,
2026-06-22T00:46:25.4640464Z           "evidence": []
2026-06-22T00:46:25.4640564Z         },
2026-06-22T00:46:25.4640668Z         "unit": {
2026-06-22T00:46:25.4640770Z           "complete": true,
2026-06-22T00:46:25.4640883Z           "evidence": [
2026-06-22T00:46:25.4640993Z             {
2026-06-22T00:46:25.4641136Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T00:46:25.4641245Z               "line": 314
2026-06-22T00:46:25.4641347Z             },
2026-06-22T00:46:25.4641455Z             {
2026-06-22T00:46:25.4641575Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4641691Z               "line": 8102
2026-06-22T00:46:25.4641794Z             }
2026-06-22T00:46:25.4641899Z           ]
2026-06-22T00:46:25.4642005Z         }
2026-06-22T00:46:25.4642109Z       }
2026-06-22T00:46:25.4642209Z     },
2026-06-22T00:46:25.4642305Z     {
2026-06-22T00:46:25.4642424Z       "id": "REQ-DAEMON-8",
2026-06-22T00:46:25.4643394Z       "title": "Internal auto-start prefers the service: `ensure_running` (any spt command's implicit daemon start, REQ-DAEMON-3) routes through the service-aware start path — when a manager has a registered service it starts THAT, never a competing manual `spawn_detached` daemon that would fight the service for the socket.",
2026-06-22T00:46:25.4643503Z       "requiredStages": [
2026-06-22T00:46:25.4643609Z         "impl",
2026-06-22T00:46:25.4643708Z         "unit"
2026-06-22T00:46:25.4643817Z       ],
2026-06-22T00:46:25.4643923Z       "stages": {
2026-06-22T00:46:25.4644027Z         "doc": {
2026-06-22T00:46:25.4644146Z           "complete": false,
2026-06-22T00:46:25.4644253Z           "evidence": []
2026-06-22T00:46:25.4644356Z         },
2026-06-22T00:46:25.4644461Z         "impl": {
2026-06-22T00:46:25.4644572Z           "complete": true,
2026-06-22T00:46:25.4644680Z           "evidence": [
2026-06-22T00:46:25.4644771Z             {
2026-06-22T00:46:25.4644925Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.4645033Z               "line": 445
2026-06-22T00:46:25.4645139Z             },
2026-06-22T00:46:25.4645240Z             {
2026-06-22T00:46:25.4645381Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T00:46:25.4645490Z               "line": 56
2026-06-22T00:46:25.4645591Z             }
2026-06-22T00:46:25.4645700Z           ]
2026-06-22T00:46:25.4645795Z         },
2026-06-22T00:46:25.4645906Z         "int": {
2026-06-22T00:46:25.4646129Z           "complete": false,
2026-06-22T00:46:25.4646239Z           "evidence": []
2026-06-22T00:46:25.4646439Z         },
2026-06-22T00:46:25.4646544Z         "unit": {
2026-06-22T00:46:25.4646668Z           "complete": true,
2026-06-22T00:46:25.4646768Z           "evidence": [
2026-06-22T00:46:25.4646874Z             {
2026-06-22T00:46:25.4647016Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T00:46:25.4647127Z               "line": 288
2026-06-22T00:46:25.4647235Z             },
2026-06-22T00:46:25.4647331Z             {
2026-06-22T00:46:25.4647475Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T00:46:25.4647583Z               "line": 325
2026-06-22T00:46:25.4647678Z             }
2026-06-22T00:46:25.4647778Z           ]
2026-06-22T00:46:25.4647886Z         }
2026-06-22T00:46:25.4647994Z       }
2026-06-22T00:46:25.4648090Z     },
2026-06-22T00:46:25.4648192Z     {
2026-06-22T00:46:25.4648304Z       "id": "REQ-DAEMON-9",
2026-06-22T00:46:25.4650725Z       "title": "Net-bind boot-race resilience: a daemon that comes up net-less (NetHost::start failed — e.g. the systemd unit autostarted before the network/DNS stack was ready, `Failed to create an address lookup service`) must SELF-HEAL — retry the net bring-up in the background with capped backoff and, on success, attach net to the broker + spawn the dispatcher/peer-pump (which today are gated on `net_up` at boot and so never start, leaving the node silently unreachable until a manual restart — kitsubito 2026-06-08). Status surfaces the net-less state honestly (a net-less broker renders as 'no connection', not only a pump-STALLED line with a bogus pre-boot heartbeat age). The installer's autostart unit waits for the network (`Wants=/After=network-online.target`) as belt-and-suspenders.",
2026-06-22T00:46:25.4650857Z       "requiredStages": [
2026-06-22T00:46:25.4650962Z         "impl",
2026-06-22T00:46:25.4651068Z         "unit"
2026-06-22T00:46:25.4651176Z       ],
2026-06-22T00:46:25.4651287Z       "stages": {
2026-06-22T00:46:25.4651397Z         "doc": {
2026-06-22T00:46:25.4651510Z           "complete": false,
2026-06-22T00:46:25.4651631Z           "evidence": []
2026-06-22T00:46:25.4651726Z         },
2026-06-22T00:46:25.4651825Z         "impl": {
2026-06-22T00:46:25.4651940Z           "complete": true,
2026-06-22T00:46:25.4652039Z           "evidence": [
2026-06-22T00:46:25.4652149Z             {
2026-06-22T00:46:25.4652289Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4652397Z               "line": 276
2026-06-22T00:46:25.4652512Z             },
2026-06-22T00:46:25.4652608Z             {
2026-06-22T00:46:25.4652760Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.4652866Z               "line": 1302
2026-06-22T00:46:25.4652975Z             },
2026-06-22T00:46:25.4653078Z             {
2026-06-22T00:46:25.4653226Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.4653334Z               "line": 197
2026-06-22T00:46:25.4653438Z             },
2026-06-22T00:46:25.4653548Z             {
2026-06-22T00:46:25.4653686Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.4653791Z               "line": 344
2026-06-22T00:46:25.4653887Z             },
2026-06-22T00:46:25.4653991Z             {
2026-06-22T00:46:25.4654130Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.4654239Z               "line": 381
2026-06-22T00:46:25.4654348Z             },
2026-06-22T00:46:25.4654450Z             {
2026-06-22T00:46:25.4654587Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4654687Z               "line": 2075
2026-06-22T00:46:25.4654779Z             }
2026-06-22T00:46:25.4654878Z           ]
2026-06-22T00:46:25.4654978Z         },
2026-06-22T00:46:25.4655079Z         "int": {
2026-06-22T00:46:25.4655189Z           "complete": false,
2026-06-22T00:46:25.4655293Z           "evidence": []
2026-06-22T00:46:25.4655384Z         },
2026-06-22T00:46:25.4655603Z         "unit": {
2026-06-22T00:46:25.4655714Z           "complete": true,
2026-06-22T00:46:25.4655819Z           "evidence": [
2026-06-22T00:46:25.4656016Z             {
2026-06-22T00:46:25.4656161Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.4656274Z               "line": 1158
2026-06-22T00:46:25.4656379Z             },
2026-06-22T00:46:25.4656485Z             {
2026-06-22T00:46:25.4670465Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4670603Z               "line": 10580
2026-06-22T00:46:25.4670712Z             }
2026-06-22T00:46:25.4670814Z           ]
2026-06-22T00:46:25.4670922Z         }
2026-06-22T00:46:25.4671027Z       }
2026-06-22T00:46:25.4671124Z     },
2026-06-22T00:46:25.4671227Z     {
2026-06-22T00:46:25.4671333Z       "id": "REQ-DOCS-1",
2026-06-22T00:46:25.4671561Z       "title": "Dual-audience docs (human + AI dev-agent), markdown once / two depths",
2026-06-22T00:46:25.4671674Z       "requiredStages": [
2026-06-22T00:46:25.4671808Z         "doc",
2026-06-22T00:46:25.4671916Z         "impl"
2026-06-22T00:46:25.4672015Z       ],
2026-06-22T00:46:25.4672136Z       "stages": {
2026-06-22T00:46:25.4672240Z         "doc": {
2026-06-22T00:46:25.4672354Z           "complete": true,
2026-06-22T00:46:25.4672460Z           "evidence": [
2026-06-22T00:46:25.4672559Z             {
2026-06-22T00:46:25.4672698Z               "path": "docs-site/src/index.md",
2026-06-22T00:46:25.4672808Z               "line": 50
2026-06-22T00:46:25.4672907Z             }
2026-06-22T00:46:25.4673007Z           ]
2026-06-22T00:46:25.4673113Z         },
2026-06-22T00:46:25.4673217Z         "impl": {
2026-06-22T00:46:25.4673332Z           "complete": true,
2026-06-22T00:46:25.4673442Z           "evidence": [
2026-06-22T00:46:25.4673537Z             {
2026-06-22T00:46:25.4673700Z               "path": ".github/workflows/docs-publish.yml",
2026-06-22T00:46:25.4673808Z               "line": 12
2026-06-22T00:46:25.4673913Z             },
2026-06-22T00:46:25.4674015Z             {
2026-06-22T00:46:25.4674160Z               "path": "crates/xtask/src/main.rs",
2026-06-22T00:46:25.4674269Z               "line": 14
2026-06-22T00:46:25.4674370Z             }
2026-06-22T00:46:25.4674473Z           ]
2026-06-22T00:46:25.4674577Z         },
2026-06-22T00:46:25.4674688Z         "int": {
2026-06-22T00:46:25.4674793Z           "complete": false,
2026-06-22T00:46:25.4674906Z           "evidence": []
2026-06-22T00:46:25.4675013Z         },
2026-06-22T00:46:25.4675121Z         "unit": {
2026-06-22T00:46:25.4675226Z           "complete": false,
2026-06-22T00:46:25.4675336Z           "evidence": []
2026-06-22T00:46:25.4675432Z         }
2026-06-22T00:46:25.4675531Z       }
2026-06-22T00:46:25.4675637Z     },
2026-06-22T00:46:25.4679747Z     {
2026-06-22T00:46:25.4679914Z       "id": "REQ-DOCS-2",
2026-06-22T00:46:25.4680110Z       "title": "Sub-10-minute runnable killer quickstart per audience",
2026-06-22T00:46:25.4680228Z       "requiredStages": [
2026-06-22T00:46:25.4680332Z         "doc",
2026-06-22T00:46:25.4680448Z         "int"
2026-06-22T00:46:25.4680548Z       ],
2026-06-22T00:46:25.4680652Z       "stages": {
2026-06-22T00:46:25.4680754Z         "doc": {
2026-06-22T00:46:25.4680877Z           "complete": true,
2026-06-22T00:46:25.4680977Z           "evidence": [
2026-06-22T00:46:25.4681083Z             {
2026-06-22T00:46:25.4681282Z               "path": "docs-site/src/harness-contract/integration-checklist.md",
2026-06-22T00:46:25.4681393Z               "line": 3
2026-06-22T00:46:25.4681496Z             },
2026-06-22T00:46:25.4681587Z             {
2026-06-22T00:46:25.4681741Z               "path": "docs-site/src/quickstart/adapter.md",
2026-06-22T00:46:25.4681849Z               "line": 3
2026-06-22T00:46:25.4681951Z             },
2026-06-22T00:46:25.4682046Z             {
2026-06-22T00:46:25.4682201Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-22T00:46:25.4682306Z               "line": 3
2026-06-22T00:46:25.4682410Z             }
2026-06-22T00:46:25.4682509Z           ]
2026-06-22T00:46:25.4682767Z         },
2026-06-22T00:46:25.4682875Z         "impl": {
2026-06-22T00:46:25.4682986Z           "complete": false,
2026-06-22T00:46:25.4683190Z           "evidence": []
2026-06-22T00:46:25.4683287Z         },
2026-06-22T00:46:25.4683401Z         "int": {
2026-06-22T00:46:25.4683510Z           "complete": true,
2026-06-22T00:46:25.4683611Z           "evidence": [
2026-06-22T00:46:25.4683706Z             {
2026-06-22T00:46:25.4683858Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-22T00:46:25.4683959Z               "line": 14
2026-06-22T00:46:25.4684068Z             }
2026-06-22T00:46:25.4684168Z           ]
2026-06-22T00:46:25.4684274Z         },
2026-06-22T00:46:25.4684378Z         "unit": {
2026-06-22T00:46:25.4684493Z           "complete": false,
2026-06-22T00:46:25.4684603Z           "evidence": []
2026-06-22T00:46:25.4684712Z         }
2026-06-22T00:46:25.4684811Z       }
2026-06-22T00:46:25.4684916Z     },
2026-06-22T00:46:25.4685024Z     {
2026-06-22T00:46:25.4685142Z       "id": "REQ-DOCS-3",
2026-06-22T00:46:25.4685457Z       "title": "Diátaxis structure; one canonical way to do X",
2026-06-22T00:46:25.4685573Z       "requiredStages": [
2026-06-22T00:46:25.4685672Z         "doc"
2026-06-22T00:46:25.4685772Z       ],
2026-06-22T00:46:25.4685878Z       "stages": {
2026-06-22T00:46:25.4685987Z         "doc": {
2026-06-22T00:46:25.4686091Z           "complete": true,
2026-06-22T00:46:25.4686211Z           "evidence": [
2026-06-22T00:46:25.4686311Z             {
2026-06-22T00:46:25.4686454Z               "path": "docs-site/src/index.md",
2026-06-22T00:46:25.4686564Z               "line": 42
2026-06-22T00:46:25.4686673Z             }
2026-06-22T00:46:25.4686779Z           ]
2026-06-22T00:46:25.4686869Z         },
2026-06-22T00:46:25.4686974Z         "impl": {
2026-06-22T00:46:25.4687074Z           "complete": false,
2026-06-22T00:46:25.4687184Z           "evidence": []
2026-06-22T00:46:25.4687288Z         },
2026-06-22T00:46:25.4687394Z         "int": {
2026-06-22T00:46:25.4687504Z           "complete": false,
2026-06-22T00:46:25.4687611Z           "evidence": []
2026-06-22T00:46:25.4687721Z         },
2026-06-22T00:46:25.4687826Z         "unit": {
2026-06-22T00:46:25.4687949Z           "complete": false,
2026-06-22T00:46:25.4688055Z           "evidence": []
2026-06-22T00:46:25.4688165Z         }
2026-06-22T00:46:25.4688259Z       }
2026-06-22T00:46:25.4688345Z     },
2026-06-22T00:46:25.4688452Z     {
2026-06-22T00:46:25.4688561Z       "id": "REQ-DOCS-4",
2026-06-22T00:46:25.4688790Z       "title": "Agent-consumable layer (llms.txt, manifest schema, MCP, CLI help)",
2026-06-22T00:46:25.4688899Z       "requiredStages": [
2026-06-22T00:46:25.4689091Z         "doc",
2026-06-22T00:46:25.4689200Z         "impl",
2026-06-22T00:46:25.4689304Z         "unit"
2026-06-22T00:46:25.4689410Z       ],
2026-06-22T00:46:25.4689509Z       "stages": {
2026-06-22T00:46:25.4689619Z         "doc": {
2026-06-22T00:46:25.4689725Z           "complete": true,
2026-06-22T00:46:25.4689847Z           "evidence": [
2026-06-22T00:46:25.4689961Z             {
2026-06-22T00:46:25.4690084Z               "path": "docs/DOCS-STRATEGY.md",
2026-06-22T00:46:25.4690193Z               "line": 35
2026-06-22T00:46:25.4690297Z             }
2026-06-22T00:46:25.4690398Z           ]
2026-06-22T00:46:25.4690502Z         },
2026-06-22T00:46:25.4690603Z         "impl": {
2026-06-22T00:46:25.4690713Z           "complete": true,
2026-06-22T00:46:25.4690817Z           "evidence": [
2026-06-22T00:46:25.4690922Z             {
2026-06-22T00:46:25.4691075Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.4691184Z               "line": 746
2026-06-22T00:46:25.4691285Z             },
2026-06-22T00:46:25.4691390Z             {
2026-06-22T00:46:25.4691532Z               "path": "crates/xtask/src/main.rs",
2026-06-22T00:46:25.4691629Z               "line": 15
2026-06-22T00:46:25.4691733Z             }
2026-06-22T00:46:25.4691833Z           ]
2026-06-22T00:46:25.4691934Z         },
2026-06-22T00:46:25.4692147Z         "int": {
2026-06-22T00:46:25.4692254Z           "complete": false,
2026-06-22T00:46:25.4692467Z           "evidence": []
2026-06-22T00:46:25.4692564Z         },
2026-06-22T00:46:25.4692667Z         "unit": {
2026-06-22T00:46:25.4692780Z           "complete": true,
2026-06-22T00:46:25.4692881Z           "evidence": [
2026-06-22T00:46:25.4692979Z             {
2026-06-22T00:46:25.4693135Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.4693256Z               "line": 1682
2026-06-22T00:46:25.4693350Z             }
2026-06-22T00:46:25.4693455Z           ]
2026-06-22T00:46:25.4693551Z         }
2026-06-22T00:46:25.4693656Z       }
2026-06-22T00:46:25.4693746Z     },
2026-06-22T00:46:25.4693848Z     {
2026-06-22T00:46:25.4693952Z       "id": "REQ-DOCS-5",
2026-06-22T00:46:25.4694177Z       "title": "Anti-drift: rustdoc/schema/exports/CLI-help generated + CI-checked",
2026-06-22T00:46:25.4694290Z       "requiredStages": [
2026-06-22T00:46:25.4694394Z         "impl",
2026-06-22T00:46:25.4694505Z         "int"
2026-06-22T00:46:25.4694605Z       ],
2026-06-22T00:46:25.4694719Z       "stages": {
2026-06-22T00:46:25.4694830Z         "doc": {
2026-06-22T00:46:25.4694933Z           "complete": false,
2026-06-22T00:46:25.4695048Z           "evidence": []
2026-06-22T00:46:25.4695135Z         },
2026-06-22T00:46:25.4695243Z         "impl": {
2026-06-22T00:46:25.4695356Z           "complete": true,
2026-06-22T00:46:25.4695467Z           "evidence": [
2026-06-22T00:46:25.4695570Z             {
2026-06-22T00:46:25.4695717Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.4695823Z               "line": 747
2026-06-22T00:46:25.4695922Z             },
2026-06-22T00:46:25.4696027Z             {
2026-06-22T00:46:25.4696157Z               "path": "crates/xtask/src/main.rs",
2026-06-22T00:46:25.4696275Z               "line": 113
2026-06-22T00:46:25.4696375Z             }
2026-06-22T00:46:25.4696480Z           ]
2026-06-22T00:46:25.4696580Z         },
2026-06-22T00:46:25.4696685Z         "int": {
2026-06-22T00:46:25.4696805Z           "complete": true,
2026-06-22T00:46:25.4696914Z           "evidence": [
2026-06-22T00:46:25.4697024Z             {
2026-06-22T00:46:25.4697157Z               "path": ".github/workflows/ci.yml",
2026-06-22T00:46:25.4697266Z               "line": 211
2026-06-22T00:46:25.4697372Z             },
2026-06-22T00:46:25.4697472Z             {
2026-06-22T00:46:25.4697620Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.4697726Z               "line": 1719
2026-06-22T00:46:25.4697829Z             }
2026-06-22T00:46:25.4697935Z           ]
2026-06-22T00:46:25.4698035Z         },
2026-06-22T00:46:25.4698139Z         "unit": {
2026-06-22T00:46:25.4698248Z           "complete": false,
2026-06-22T00:46:25.4698358Z           "evidence": []
2026-06-22T00:46:25.4698463Z         }
2026-06-22T00:46:25.4698562Z       }
2026-06-22T00:46:25.4698668Z     },
2026-06-22T00:46:25.4698759Z     {
2026-06-22T00:46:25.4698877Z       "id": "REQ-DOCS-6",
2026-06-22T00:46:25.4699326Z       "title": "spt how-to <topic>: in-binary task-oriented agent instructions (anti-drift; quickstart prompts point agents at it)",
2026-06-22T00:46:25.4699464Z       "requiredStages": [
2026-06-22T00:46:25.4699569Z         "impl",
2026-06-22T00:46:25.4699670Z         "unit",
2026-06-22T00:46:25.4699774Z         "int"
2026-06-22T00:46:25.4699874Z       ],
2026-06-22T00:46:25.4699970Z       "stages": {
2026-06-22T00:46:25.4700069Z         "doc": {
2026-06-22T00:46:25.4700184Z           "complete": true,
2026-06-22T00:46:25.4700290Z           "evidence": [
2026-06-22T00:46:25.4700393Z             {
2026-06-22T00:46:25.4700559Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-22T00:46:25.4700668Z               "line": 4
2026-06-22T00:46:25.4700772Z             }
2026-06-22T00:46:25.4700867Z           ]
2026-06-22T00:46:25.4700968Z         },
2026-06-22T00:46:25.4701072Z         "impl": {
2026-06-22T00:46:25.4701182Z           "complete": true,
2026-06-22T00:46:25.4701391Z           "evidence": [
2026-06-22T00:46:25.4701487Z             {
2026-06-22T00:46:25.4701720Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4701826Z               "line": 5240
2026-06-22T00:46:25.4701930Z             }
2026-06-22T00:46:25.4702025Z           ]
2026-06-22T00:46:25.4702131Z         },
2026-06-22T00:46:25.4702240Z         "int": {
2026-06-22T00:46:25.4702345Z           "complete": true,
2026-06-22T00:46:25.4702456Z           "evidence": [
2026-06-22T00:46:25.4702555Z             {
2026-06-22T00:46:25.4702712Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-22T00:46:25.4702819Z               "line": 39
2026-06-22T00:46:25.4702926Z             }
2026-06-22T00:46:25.4703032Z           ]
2026-06-22T00:46:25.4703129Z         },
2026-06-22T00:46:25.4703236Z         "unit": {
2026-06-22T00:46:25.4703350Z           "complete": true,
2026-06-22T00:46:25.4703470Z           "evidence": [
2026-06-22T00:46:25.4703554Z             {
2026-06-22T00:46:25.4703690Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4703797Z               "line": 10742
2026-06-22T00:46:25.4703906Z             }
2026-06-22T00:46:25.4704010Z           ]
2026-06-22T00:46:25.4704112Z         }
2026-06-22T00:46:25.4704202Z       }
2026-06-22T00:46:25.4704292Z     },
2026-06-22T00:46:25.4704398Z     {
2026-06-22T00:46:25.4704517Z       "id": "REQ-ELEVATE-1",
2026-06-22T00:46:25.4707646Z       "title": "Cross-platform self-elevating re-launch for privilege-gated commands: a pure decision seam `decide_elevation_path(os, elevation, interactive_tty, has_display, has_pkexec, has_term_emulator) -> ElevatePath{AlreadyElevated, InlineSudo, UacWindow, Pkexec, TerminalEmulator, PrintHint}` selecting how to re-acquire privilege, and the per-OS impure launchers it dispatches — Windows UAC console (ShellExecuteW `runas` on the abs-exe + verbatim argv; the elevated child does the work, prints 'You can close this window', and pauses for a keypress; the original prints 'Elevated terminal launched…' and exits 0; NEVER pipes the child's stdout back across the privilege boundary), Linux desktop pkexec (preferred, native polkit GUI auth) else x-terminal-emulator -e sudo (fallback list x-terminal-emulator→gnome-terminal→konsole→xterm), the existing interactive-TTY inline sudo, and the headless/no-path floor that prints the absolute-path command. Reused by every gated command (not subnet-specific). Generalizes should_auto_elevate.",
2026-06-22T00:46:25.4707793Z       "requiredStages": [
2026-06-22T00:46:25.4707904Z         "doc",
2026-06-22T00:46:25.4708013Z         "impl",
2026-06-22T00:46:25.4708118Z         "unit"
2026-06-22T00:46:25.4708214Z       ],
2026-06-22T00:46:25.4708309Z       "stages": {
2026-06-22T00:46:25.4708408Z         "doc": {
2026-06-22T00:46:25.4708510Z           "complete": true,
2026-06-22T00:46:25.4708624Z           "evidence": [
2026-06-22T00:46:25.4708723Z             {
2026-06-22T00:46:25.4708846Z               "path": "CONTEXT.md",
2026-06-22T00:46:25.4709032Z               "line": 687
2026-06-22T00:46:25.4709142Z             }
2026-06-22T00:46:25.4709252Z           ]
2026-06-22T00:46:25.4709357Z         },
2026-06-22T00:46:25.4709466Z         "impl": {
2026-06-22T00:46:25.4709577Z           "complete": true,
2026-06-22T00:46:25.4709695Z           "evidence": [
2026-06-22T00:46:25.4709795Z             {
2026-06-22T00:46:25.4709929Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4710043Z               "line": 3572
2026-06-22T00:46:25.4710149Z             },
2026-06-22T00:46:25.4710253Z             {
2026-06-22T00:46:25.4710386Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4710483Z               "line": 3617
2026-06-22T00:46:25.4710582Z             },
2026-06-22T00:46:25.4710691Z             {
2026-06-22T00:46:25.4710821Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4710934Z               "line": 3679
2026-06-22T00:46:25.4711039Z             },
2026-06-22T00:46:25.4711138Z             {
2026-06-22T00:46:25.4711418Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T00:46:25.4711533Z               "line": 92
2026-06-22T00:46:25.4711718Z             },
2026-06-22T00:46:25.4711828Z             {
2026-06-22T00:46:25.4711951Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T00:46:25.4712067Z               "line": 148
2026-06-22T00:46:25.4712166Z             }
2026-06-22T00:46:25.4712266Z           ]
2026-06-22T00:46:25.4712377Z         },
2026-06-22T00:46:25.4712481Z         "int": {
2026-06-22T00:46:25.4712590Z           "complete": false,
2026-06-22T00:46:25.4712701Z           "evidence": []
2026-06-22T00:46:25.4712796Z         },
2026-06-22T00:46:25.4712887Z         "unit": {
2026-06-22T00:46:25.4712996Z           "complete": true,
2026-06-22T00:46:25.4713093Z           "evidence": [
2026-06-22T00:46:25.4713196Z             {
2026-06-22T00:46:25.4713331Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T00:46:25.4713440Z               "line": 442
2026-06-22T00:46:25.4713549Z             },
2026-06-22T00:46:25.4713641Z             {
2026-06-22T00:46:25.4713778Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T00:46:25.4713877Z               "line": 460
2026-06-22T00:46:25.4713977Z             }
2026-06-22T00:46:25.4714082Z           ]
2026-06-22T00:46:25.4714180Z         }
2026-06-22T00:46:25.4714290Z       }
2026-06-22T00:46:25.4714376Z     },
2026-06-22T00:46:25.4714475Z     {
2026-06-22T00:46:25.4714599Z       "id": "REQ-ENDPOINT-LIST-MERGE-LOCAL",
2026-06-22T00:46:25.4716377Z       "title": "`spt endpoint list` always merges this node's LOCAL (unadvertised) perches into the view; the `--local` flag is REMOVED (operator decision 2026-06-17). Rationale: `spt whoami` is a thin alias of `endpoint list` — a just-online agent running `whoami` must see its OWN perch, or it gets an omitted-self view ('chaos'). FIX: drop the `--local` flag + its `--detail` conflict test + the v0.10.0 REQ-PICKER-5 hint line (cli.rs:1678) + cmd_list_local; the bare list merges local perches into the subnet view; fix the whoami alias path accordingly. Run `cargo run -p xtask -- gen` (docs-drift, DEFAULT target). (v0.12.1)",
2026-06-22T00:46:25.4716505Z       "requiredStages": [
2026-06-22T00:46:25.4716606Z         "doc",
2026-06-22T00:46:25.4716713Z         "impl",
2026-06-22T00:46:25.4716808Z         "unit"
2026-06-22T00:46:25.4716904Z       ],
2026-06-22T00:46:25.4717009Z       "stages": {
2026-06-22T00:46:25.4717113Z         "doc": {
2026-06-22T00:46:25.4717229Z           "complete": true,
2026-06-22T00:46:25.4717334Z           "evidence": [
2026-06-22T00:46:25.4717437Z             {
2026-06-22T00:46:25.4717558Z               "path": "CONTEXT.md",
2026-06-22T00:46:25.4717662Z               "line": 711
2026-06-22T00:46:25.4717766Z             }
2026-06-22T00:46:25.4717863Z           ]
2026-06-22T00:46:25.4717967Z         },
2026-06-22T00:46:25.4718072Z         "impl": {
2026-06-22T00:46:25.4718188Z           "complete": true,
2026-06-22T00:46:25.4718301Z           "evidence": [
2026-06-22T00:46:25.4718401Z             {
2026-06-22T00:46:25.4718535Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4718649Z               "line": 1721
2026-06-22T00:46:25.4718755Z             },
2026-06-22T00:46:25.4718855Z             {
2026-06-22T00:46:25.4719055Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4719160Z               "line": 3125
2026-06-22T00:46:25.4719254Z             },
2026-06-22T00:46:25.4719348Z             {
2026-06-22T00:46:25.4719498Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4719602Z               "line": 3134
2026-06-22T00:46:25.4719707Z             }
2026-06-22T00:46:25.4719803Z           ]
2026-06-22T00:46:25.4719898Z         },
2026-06-22T00:46:25.4720002Z         "int": {
2026-06-22T00:46:25.4720117Z           "complete": false,
2026-06-22T00:46:25.4720222Z           "evidence": []
2026-06-22T00:46:25.4720321Z         },
2026-06-22T00:46:25.4720427Z         "unit": {
2026-06-22T00:46:25.4720646Z           "complete": true,
2026-06-22T00:46:25.4720761Z           "evidence": [
2026-06-22T00:46:25.4720851Z             {
2026-06-22T00:46:25.4721066Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4721170Z               "line": 7950
2026-06-22T00:46:25.4721266Z             },
2026-06-22T00:46:25.4721358Z             {
2026-06-22T00:46:25.4721490Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4721604Z               "line": 7991
2026-06-22T00:46:25.4721713Z             }
2026-06-22T00:46:25.4721816Z           ]
2026-06-22T00:46:25.4721915Z         }
2026-06-22T00:46:25.4722025Z       }
2026-06-22T00:46:25.4722122Z     },
2026-06-22T00:46:25.4722230Z     {
2026-06-22T00:46:25.4722355Z       "id": "REQ-ENDPOINT-PURGE",
2026-06-22T00:46:25.4727113Z       "title": "`spt endpoint purge <id>` fully removes an endpoint AND every record keyed on it — the formal teardown devs/CI need for clean test setup/reset. NOT consent-gated (a local dev/test op — no peer consent). OFFLINE-ONLY: refuses while the endpoint is online / daemon-hosted (deleting records out from under a live host risks the daemon re-creating or re-hosting mid-purge); `--force` STOPS it first (endpoint stop → wait for the daemon reconcile to un-host + reap the Psyche) THEN purges. Confirms interactively unless `--yes` (the CI path). Refuses purging the CALLER's OWN running id. All LOCAL — purge reaches only THIS node's records; a remote endpoint's records can't be touched, and its subnet-registry rows decay via the epoch-lease eviction (REQ-HAZARD-REGISTRY-DECAY). Removes: (1) the perch dir TREE recursively — owlery/<id>/ incl every nested {id}-psyche / {id}-w* / shells child (info.json, ready marker, sessions.log ledger, spool.db, inbox, .idle/.more-done sentinels, auth token); (2) the registry address (registry::unregister_address); (3) the context store — ContextStore::remove_endpoint(id): the a-<id> branch+worktree + the <id>/ rows from every p-<project> branch (the same fn `fork --delete-source` already uses); (4) node-local trust rows keyed on the id — access.json + visibility.json. Reuse-heavy: it is `fork --delete-source` generalized (recursive perch remove + unregister + remove_endpoint) + the trust-record cleanup; `endpoint rename` already enumerates the same record set + uses the same offline-only gate. (v0.12.0)",
2026-06-22T00:46:25.4727283Z       "requiredStages": [
2026-06-22T00:46:25.4727387Z         "doc",
2026-06-22T00:46:25.4727488Z         "impl",
2026-06-22T00:46:25.4727597Z         "unit",
2026-06-22T00:46:25.4727702Z         "int"
2026-06-22T00:46:25.4727846Z       ],
2026-06-22T00:46:25.4727945Z       "stages": {
2026-06-22T00:46:25.4728051Z         "doc": {
2026-06-22T00:46:25.4728160Z           "complete": true,
2026-06-22T00:46:25.4728289Z           "evidence": [
2026-06-22T00:46:25.4728404Z             {
2026-06-22T00:46:25.4728523Z               "path": "CONTEXT.md",
2026-06-22T00:46:25.4728637Z               "line": 163
2026-06-22T00:46:25.4728739Z             }
2026-06-22T00:46:25.4728837Z           ]
2026-06-22T00:46:25.4728933Z         },
2026-06-22T00:46:25.4729242Z         "impl": {
2026-06-22T00:46:25.4729353Z           "complete": true,
2026-06-22T00:46:25.4729452Z           "evidence": [
2026-06-22T00:46:25.4729553Z             {
2026-06-22T00:46:25.4729702Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T00:46:25.4729809Z               "line": 105
2026-06-22T00:46:25.4729913Z             },
2026-06-22T00:46:25.4730015Z             {
2026-06-22T00:46:25.4730148Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4730262Z               "line": 7219
2026-06-22T00:46:25.4730353Z             }
2026-06-22T00:46:25.4730458Z           ]
2026-06-22T00:46:25.4730552Z         },
2026-06-22T00:46:25.4730659Z         "int": {
2026-06-22T00:46:25.4730768Z           "complete": true,
2026-06-22T00:46:25.4730876Z           "evidence": [
2026-06-22T00:46:25.4730978Z             {
2026-06-22T00:46:25.4731111Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4731335Z               "line": 7384
2026-06-22T00:46:25.4731445Z             }
2026-06-22T00:46:25.4731540Z           ]
2026-06-22T00:46:25.4731712Z         },
2026-06-22T00:46:25.4731821Z         "unit": {
2026-06-22T00:46:25.4731928Z           "complete": true,
2026-06-22T00:46:25.4732040Z           "evidence": [
2026-06-22T00:46:25.4732159Z             {
2026-06-22T00:46:25.4732287Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4732405Z               "line": 7355
2026-06-22T00:46:25.4732514Z             }
2026-06-22T00:46:25.4732620Z           ]
2026-06-22T00:46:25.4732729Z         }
2026-06-22T00:46:25.4732838Z       }
2026-06-22T00:46:25.4732944Z     },
2026-06-22T00:46:25.4733044Z     {
2026-06-22T00:46:25.4733177Z       "id": "REQ-ENDPOINT-STOP-OFFLINE",
2026-06-22T00:46:25.4734532Z       "title": "H3: `spt endpoint stop <id>` marks the endpoint OFFLINE (alive=false), not merely de-readied. cmd_stop (cli.rs:2994-3010) removes the ready marker + unregisters the address but does NOT set status offline, so a stopped daemon-hosted endpoint still reports alive=true (status=online latch). FIX: add set_status(perch, STATUS_OFFLINE) to cmd_stop — folds with B2 (same setter). Unit: stop → is_perch_alive=false / alive=false. (v0.12.0)",
2026-06-22T00:46:25.4734665Z       "requiredStages": [
2026-06-22T00:46:25.4734775Z         "impl",
2026-06-22T00:46:25.4734880Z         "unit"
2026-06-22T00:46:25.4734978Z       ],
2026-06-22T00:46:25.4735083Z       "stages": {
2026-06-22T00:46:25.4735188Z         "doc": {
2026-06-22T00:46:25.4735300Z           "complete": false,
2026-06-22T00:46:25.4735410Z           "evidence": []
2026-06-22T00:46:25.4735515Z         },
2026-06-22T00:46:25.4735624Z         "impl": {
2026-06-22T00:46:25.4735734Z           "complete": true,
2026-06-22T00:46:25.4735844Z           "evidence": [
2026-06-22T00:46:25.4735948Z             {
2026-06-22T00:46:25.4736083Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4736197Z               "line": 3165
2026-06-22T00:46:25.4736306Z             }
2026-06-22T00:46:25.4736407Z           ]
2026-06-22T00:46:25.4736506Z         },
2026-06-22T00:46:25.4736630Z         "int": {
2026-06-22T00:46:25.4736741Z           "complete": false,
2026-06-22T00:46:25.4736854Z           "evidence": []
2026-06-22T00:46:25.4736969Z         },
2026-06-22T00:46:25.4737070Z         "unit": {
2026-06-22T00:46:25.4737178Z           "complete": true,
2026-06-22T00:46:25.4737284Z           "evidence": [
2026-06-22T00:46:25.4737390Z             {
2026-06-22T00:46:25.4737517Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4737625Z               "line": 7331
2026-06-22T00:46:25.4737736Z             }
2026-06-22T00:46:25.4737829Z           ]
2026-06-22T00:46:25.4737924Z         }
2026-06-22T00:46:25.4738024Z       }
2026-06-22T00:46:25.4738130Z     },
2026-06-22T00:46:25.4738224Z     {
2026-06-22T00:46:25.4738345Z       "id": "REQ-EP-1",
2026-06-22T00:46:25.4738510Z       "title": "Day-one endpoint types; open type system",
2026-06-22T00:46:25.4738635Z       "requiredStages": [
2026-06-22T00:46:25.4738735Z         "impl",
2026-06-22T00:46:25.4738844Z         "unit"
2026-06-22T00:46:25.4739035Z       ],
2026-06-22T00:46:25.4739144Z       "stages": {
2026-06-22T00:46:25.4739260Z         "doc": {
2026-06-22T00:46:25.4739369Z           "complete": false,
2026-06-22T00:46:25.4739478Z           "evidence": []
2026-06-22T00:46:25.4739575Z         },
2026-06-22T00:46:25.4739679Z         "impl": {
2026-06-22T00:46:25.4739793Z           "complete": true,
2026-06-22T00:46:25.4739899Z           "evidence": [
2026-06-22T00:46:25.4739999Z             {
2026-06-22T00:46:25.4740151Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T00:46:25.4740252Z               "line": 77
2026-06-22T00:46:25.4740360Z             },
2026-06-22T00:46:25.4740455Z             {
2026-06-22T00:46:25.4740599Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T00:46:25.4740708Z               "line": 94
2026-06-22T00:46:25.4740928Z             }
2026-06-22T00:46:25.4741037Z           ]
2026-06-22T00:46:25.4741131Z         },
2026-06-22T00:46:25.4741238Z         "int": {
2026-06-22T00:46:25.4741432Z           "complete": false,
2026-06-22T00:46:25.4741548Z           "evidence": []
2026-06-22T00:46:25.4741642Z         },
2026-06-22T00:46:25.4741756Z         "unit": {
2026-06-22T00:46:25.4741863Z           "complete": true,
2026-06-22T00:46:25.4741967Z           "evidence": [
2026-06-22T00:46:25.4742067Z             {
2026-06-22T00:46:25.4742206Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T00:46:25.4742319Z               "line": 161
2026-06-22T00:46:25.4742410Z             },
2026-06-22T00:46:25.4742521Z             {
2026-06-22T00:46:25.4742657Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T00:46:25.4742762Z               "line": 178
2026-06-22T00:46:25.4742857Z             }
2026-06-22T00:46:25.4742960Z           ]
2026-06-22T00:46:25.4743074Z         }
2026-06-22T00:46:25.4743180Z       }
2026-06-22T00:46:25.4743294Z     },
2026-06-22T00:46:25.4743394Z     {
2026-06-22T00:46:25.4743499Z       "id": "REQ-EP-2",
2026-06-22T00:46:25.4743708Z       "title": "Agent endpoints vs Shells distinction in the type model",
2026-06-22T00:46:25.4743824Z       "requiredStages": [
2026-06-22T00:46:25.4743937Z         "impl",
2026-06-22T00:46:25.4744038Z         "unit"
2026-06-22T00:46:25.4744147Z       ],
2026-06-22T00:46:25.4744262Z       "stages": {
2026-06-22T00:46:25.4744352Z         "doc": {
2026-06-22T00:46:25.4744472Z           "complete": false,
2026-06-22T00:46:25.4744581Z           "evidence": []
2026-06-22T00:46:25.4744677Z         },
2026-06-22T00:46:25.4744782Z         "impl": {
2026-06-22T00:46:25.4744939Z           "complete": true,
2026-06-22T00:46:25.4745040Z           "evidence": [
2026-06-22T00:46:25.4745139Z             {
2026-06-22T00:46:25.4745287Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T00:46:25.4745393Z               "line": 114
2026-06-22T00:46:25.4745506Z             },
2026-06-22T00:46:25.4745605Z             {
2026-06-22T00:46:25.4745752Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T00:46:25.4745860Z               "line": 131
2026-06-22T00:46:25.4745960Z             },
2026-06-22T00:46:25.4746066Z             {
2026-06-22T00:46:25.4746203Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T00:46:25.4746319Z               "line": 138
2026-06-22T00:46:25.4746423Z             }
2026-06-22T00:46:25.4746527Z           ]
2026-06-22T00:46:25.4746634Z         },
2026-06-22T00:46:25.4746743Z         "int": {
2026-06-22T00:46:25.4746866Z           "complete": false,
2026-06-22T00:46:25.4746972Z           "evidence": []
2026-06-22T00:46:25.4747081Z         },
2026-06-22T00:46:25.4747171Z         "unit": {
2026-06-22T00:46:25.4747282Z           "complete": true,
2026-06-22T00:46:25.4747391Z           "evidence": [
2026-06-22T00:46:25.4747491Z             {
2026-06-22T00:46:25.4747630Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T00:46:25.4747738Z               "line": 190
2026-06-22T00:46:25.4747844Z             },
2026-06-22T00:46:25.4747955Z             {
2026-06-22T00:46:25.4748091Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T00:46:25.4748200Z               "line": 208
2026-06-22T00:46:25.4748305Z             },
2026-06-22T00:46:25.4748412Z             {
2026-06-22T00:46:25.4748551Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T00:46:25.4748657Z               "line": 221
2026-06-22T00:46:25.4748760Z             }
2026-06-22T00:46:25.4748871Z           ]
2026-06-22T00:46:25.4749052Z         }
2026-06-22T00:46:25.4749166Z       }
2026-06-22T00:46:25.4749272Z     },
2026-06-22T00:46:25.4749371Z     {
2026-06-22T00:46:25.4749481Z       "id": "REQ-EP-3",
2026-06-22T00:46:25.4749681Z       "title": "Messaging payloads carry typed operation commands + file blobs",
2026-06-22T00:46:25.4749805Z       "requiredStages": [
2026-06-22T00:46:25.4749915Z         "impl",
2026-06-22T00:46:25.4750135Z         "unit"
2026-06-22T00:46:25.4750244Z       ],
2026-06-22T00:46:25.4750358Z       "stages": {
2026-06-22T00:46:25.4750559Z         "doc": {
2026-06-22T00:46:25.4750663Z           "complete": false,
2026-06-22T00:46:25.4750770Z           "evidence": []
2026-06-22T00:46:25.4750883Z         },
2026-06-22T00:46:25.4750982Z         "impl": {
2026-06-22T00:46:25.4751092Z           "complete": true,
2026-06-22T00:46:25.4751192Z           "evidence": [
2026-06-22T00:46:25.4751301Z             {
2026-06-22T00:46:25.4751449Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T00:46:25.4751560Z               "line": 31
2026-06-22T00:46:25.4751668Z             },
2026-06-22T00:46:25.4751760Z             {
2026-06-22T00:46:25.4751907Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T00:46:25.4752011Z               "line": 49
2026-06-22T00:46:25.4752122Z             }
2026-06-22T00:46:25.4752217Z           ]
2026-06-22T00:46:25.4752331Z         },
2026-06-22T00:46:25.4752451Z         "int": {
2026-06-22T00:46:25.4752565Z           "complete": false,
2026-06-22T00:46:25.4752670Z           "evidence": []
2026-06-22T00:46:25.4752762Z         },
2026-06-22T00:46:25.4752865Z         "unit": {
2026-06-22T00:46:25.4752970Z           "complete": true,
2026-06-22T00:46:25.4753077Z           "evidence": [
2026-06-22T00:46:25.4753184Z             {
2026-06-22T00:46:25.4753322Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T00:46:25.4753436Z               "line": 156
2026-06-22T00:46:25.4753539Z             },
2026-06-22T00:46:25.4753644Z             {
2026-06-22T00:46:25.4753774Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T00:46:25.4753877Z               "line": 164
2026-06-22T00:46:25.4753982Z             },
2026-06-22T00:46:25.4754083Z             {
2026-06-22T00:46:25.4754234Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T00:46:25.4754341Z               "line": 177
2026-06-22T00:46:25.4754450Z             },
2026-06-22T00:46:25.4754559Z             {
2026-06-22T00:46:25.4754703Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T00:46:25.4754812Z               "line": 200
2026-06-22T00:46:25.4754922Z             },
2026-06-22T00:46:25.4755027Z             {
2026-06-22T00:46:25.4755165Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T00:46:25.4755271Z               "line": 216
2026-06-22T00:46:25.4755379Z             },
2026-06-22T00:46:25.4755475Z             {
2026-06-22T00:46:25.4755615Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T00:46:25.4755713Z               "line": 233
2026-06-22T00:46:25.4755823Z             }
2026-06-22T00:46:25.4755920Z           ]
2026-06-22T00:46:25.4756023Z         }
2026-06-22T00:46:25.4756132Z       }
2026-06-22T00:46:25.4756232Z     },
2026-06-22T00:46:25.4756340Z     {
2026-06-22T00:46:25.4756448Z       "id": "REQ-EP-4",
2026-06-22T00:46:25.4756622Z       "title": "PresenceChannel broker endpoint (seam day-one)",
2026-06-22T00:46:25.4756740Z       "requiredStages": [
2026-06-22T00:46:25.4756840Z         "impl",
2026-06-22T00:46:25.4756955Z         "unit"
2026-06-22T00:46:25.4757045Z       ],
2026-06-22T00:46:25.4757150Z       "stages": {
2026-06-22T00:46:25.4757246Z         "doc": {
2026-06-22T00:46:25.4757360Z           "complete": false,
2026-06-22T00:46:25.4757465Z           "evidence": []
2026-06-22T00:46:25.4757575Z         },
2026-06-22T00:46:25.4757680Z         "impl": {
2026-06-22T00:46:25.4757789Z           "complete": true,
2026-06-22T00:46:25.4757899Z           "evidence": [
2026-06-22T00:46:25.4757998Z             {
2026-06-22T00:46:25.4758143Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T00:46:25.4758252Z               "line": 778
2026-06-22T00:46:25.4758352Z             },
2026-06-22T00:46:25.4758463Z             {
2026-06-22T00:46:25.4758600Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T00:46:25.4758703Z               "line": 1221
2026-06-22T00:46:25.4758884Z             },
2026-06-22T00:46:25.4759049Z             {
2026-06-22T00:46:25.4759193Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.4759397Z               "line": 2410
2026-06-22T00:46:25.4759498Z             },
2026-06-22T00:46:25.4759603Z             {
2026-06-22T00:46:25.4759731Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T00:46:25.4759837Z               "line": 125
2026-06-22T00:46:25.4759945Z             },
2026-06-22T00:46:25.4760046Z             {
2026-06-22T00:46:25.4760170Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T00:46:25.4760279Z               "line": 715
2026-06-22T00:46:25.4760380Z             },
2026-06-22T00:46:25.4760485Z             {
2026-06-22T00:46:25.4760622Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T00:46:25.4760733Z               "line": 864
2026-06-22T00:46:25.4760828Z             },
2026-06-22T00:46:25.4760937Z             {
2026-06-22T00:46:25.4761082Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T00:46:25.4761184Z               "line": 321
2026-06-22T00:46:25.4761286Z             },
2026-06-22T00:46:25.4761396Z             {
2026-06-22T00:46:25.4761542Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T00:46:25.4761647Z               "line": 508
2026-06-22T00:46:25.4761757Z             },
2026-06-22T00:46:25.4761861Z             {
2026-06-22T00:46:25.4762000Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T00:46:25.4762115Z               "line": 1334
2026-06-22T00:46:25.4762214Z             }
2026-06-22T00:46:25.4762320Z           ]
2026-06-22T00:46:25.4762419Z         },
2026-06-22T00:46:25.4762528Z         "int": {
2026-06-22T00:46:25.4762644Z           "complete": false,
2026-06-22T00:46:25.4762753Z           "evidence": []
2026-06-22T00:46:25.4762862Z         },
2026-06-22T00:46:25.4762964Z         "unit": {
2026-06-22T00:46:25.4763082Z           "complete": true,
2026-06-22T00:46:25.4763187Z           "evidence": [
2026-06-22T00:46:25.4763298Z             {
2026-06-22T00:46:25.4763444Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T00:46:25.4763549Z               "line": 955
2026-06-22T00:46:25.4768339Z             },
2026-06-22T00:46:25.4768483Z             {
2026-06-22T00:46:25.4768654Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-22T00:46:25.4768760Z               "line": 76
2026-06-22T00:46:25.4768902Z             },
2026-06-22T00:46:25.4769089Z             {
2026-06-22T00:46:25.4769249Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-22T00:46:25.4769364Z               "line": 147
2026-06-22T00:46:25.4769463Z             }
2026-06-22T00:46:25.4769566Z           ]
2026-06-22T00:46:25.4769671Z         }
2026-06-22T00:46:25.4769772Z       }
2026-06-22T00:46:25.4769871Z     },
2026-06-22T00:46:25.4769971Z     {
2026-06-22T00:46:25.4770077Z       "id": "REQ-EP-5",
2026-06-22T00:46:25.4770772Z       "title": "Concrete shell instantiation model: spawn-mints-instance (vs relink/online), registered-on-node permission + broadcast-is-discovery, per-shell require_approval gate, max_instances_per_owner + over_cap, instance aliasing, discovery scope",
2026-06-22T00:46:25.4770902Z       "requiredStages": [
2026-06-22T00:46:25.4771012Z         "impl",
2026-06-22T00:46:25.4771112Z         "unit",
2026-06-22T00:46:25.4771216Z         "int"
2026-06-22T00:46:25.4771317Z       ],
2026-06-22T00:46:25.4771425Z       "stages": {
2026-06-22T00:46:25.4771526Z         "doc": {
2026-06-22T00:46:25.4771637Z           "complete": false,
2026-06-22T00:46:25.4771750Z           "evidence": []
2026-06-22T00:46:25.4771861Z         },
2026-06-22T00:46:25.4771966Z         "impl": {
2026-06-22T00:46:25.4772074Z           "complete": true,
2026-06-22T00:46:25.4772183Z           "evidence": [
2026-06-22T00:46:25.4772279Z             {
2026-06-22T00:46:25.4772435Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.4772551Z               "line": 367
2026-06-22T00:46:25.4772817Z             },
2026-06-22T00:46:25.4772918Z             {
2026-06-22T00:46:25.4773070Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T00:46:25.4773276Z               "line": 18
2026-06-22T00:46:25.4773380Z             },
2026-06-22T00:46:25.4773480Z             {
2026-06-22T00:46:25.4773614Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T00:46:25.4773723Z               "line": 63
2026-06-22T00:46:25.4773825Z             },
2026-06-22T00:46:25.4773929Z             {
2026-06-22T00:46:25.4774061Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T00:46:25.4774163Z               "line": 92
2026-06-22T00:46:25.4774272Z             },
2026-06-22T00:46:25.4774371Z             {
2026-06-22T00:46:25.4774509Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T00:46:25.4774617Z               "line": 167
2026-06-22T00:46:25.4774721Z             },
2026-06-22T00:46:25.4774822Z             {
2026-06-22T00:46:25.4774955Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T00:46:25.4775069Z               "line": 179
2026-06-22T00:46:25.4775179Z             },
2026-06-22T00:46:25.4775284Z             {
2026-06-22T00:46:25.4775427Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.4775537Z               "line": 114
2026-06-22T00:46:25.4775641Z             },
2026-06-22T00:46:25.4775737Z             {
2026-06-22T00:46:25.4775885Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T00:46:25.4775994Z               "line": 22
2026-06-22T00:46:25.4776100Z             },
2026-06-22T00:46:25.4776204Z             {
2026-06-22T00:46:25.4776347Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T00:46:25.4776448Z               "line": 145
2026-06-22T00:46:25.4776557Z             },
2026-06-22T00:46:25.4776662Z             {
2026-06-22T00:46:25.4776800Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T00:46:25.4776910Z               "line": 174
2026-06-22T00:46:25.4777021Z             },
2026-06-22T00:46:25.4777125Z             {
2026-06-22T00:46:25.4777266Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T00:46:25.4777386Z               "line": 196
2026-06-22T00:46:25.4777484Z             },
2026-06-22T00:46:25.4777588Z             {
2026-06-22T00:46:25.4777737Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T00:46:25.4777836Z               "line": 221
2026-06-22T00:46:25.4777941Z             },
2026-06-22T00:46:25.4778033Z             {
2026-06-22T00:46:25.4778179Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T00:46:25.4778290Z               "line": 247
2026-06-22T00:46:25.4778394Z             },
2026-06-22T00:46:25.4778499Z             {
2026-06-22T00:46:25.4778628Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T00:46:25.4778742Z               "line": 270
2026-06-22T00:46:25.4778842Z             },
2026-06-22T00:46:25.4779029Z             {
2026-06-22T00:46:25.4779181Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.4779292Z               "line": 104
2026-06-22T00:46:25.4779409Z             },
2026-06-22T00:46:25.4779505Z             {
2026-06-22T00:46:25.4779635Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4779748Z               "line": 6068
2026-06-22T00:46:25.4779857Z             },
2026-06-22T00:46:25.4779962Z             {
2026-06-22T00:46:25.4780093Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4780198Z               "line": 6202
2026-06-22T00:46:25.4780299Z             },
2026-06-22T00:46:25.4780403Z             {
2026-06-22T00:46:25.4780527Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4780638Z               "line": 6368
2026-06-22T00:46:25.4780746Z             },
2026-06-22T00:46:25.4780842Z             {
2026-06-22T00:46:25.4780966Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4781070Z               "line": 6896
2026-06-22T00:46:25.4781281Z             }
2026-06-22T00:46:25.4781376Z           ]
2026-06-22T00:46:25.4781476Z         },
2026-06-22T00:46:25.4781681Z         "int": {
2026-06-22T00:46:25.4781786Z           "complete": true,
2026-06-22T00:46:25.4781887Z           "evidence": [
2026-06-22T00:46:25.4781990Z             {
2026-06-22T00:46:25.4782150Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-22T00:46:25.4782258Z               "line": 16
2026-06-22T00:46:25.4782363Z             },
2026-06-22T00:46:25.4782464Z             {
2026-06-22T00:46:25.4782606Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-22T00:46:25.4782719Z               "line": 15
2026-06-22T00:46:25.4782810Z             }
2026-06-22T00:46:25.4782916Z           ]
2026-06-22T00:46:25.4783010Z         },
2026-06-22T00:46:25.4783121Z         "unit": {
2026-06-22T00:46:25.4783235Z           "complete": true,
2026-06-22T00:46:25.4783339Z           "evidence": [
2026-06-22T00:46:25.4783440Z             {
2026-06-22T00:46:25.4783593Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T00:46:25.4783702Z               "line": 246
2026-06-22T00:46:25.4783812Z             },
2026-06-22T00:46:25.4783922Z             {
2026-06-22T00:46:25.4784065Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T00:46:25.4784174Z               "line": 306
2026-06-22T00:46:25.4784278Z             },
2026-06-22T00:46:25.4784375Z             {
2026-06-22T00:46:25.4784517Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T00:46:25.4784631Z               "line": 363
2026-06-22T00:46:25.4784723Z             },
2026-06-22T00:46:25.4784818Z             {
2026-06-22T00:46:25.4784955Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T00:46:25.4785059Z               "line": 286
2026-06-22T00:46:25.4785159Z             },
2026-06-22T00:46:25.4785262Z             {
2026-06-22T00:46:25.4785411Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T00:46:25.4785515Z               "line": 338
2026-06-22T00:46:25.4785629Z             },
2026-06-22T00:46:25.4785721Z             {
2026-06-22T00:46:25.4785877Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.4785983Z               "line": 783
2026-06-22T00:46:25.4786087Z             },
2026-06-22T00:46:25.4786178Z             {
2026-06-22T00:46:25.4786303Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4786416Z               "line": 8751
2026-06-22T00:46:25.4786520Z             },
2026-06-22T00:46:25.4786622Z             {
2026-06-22T00:46:25.4786745Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4786859Z               "line": 8904
2026-06-22T00:46:25.4786961Z             },
2026-06-22T00:46:25.4787060Z             {
2026-06-22T00:46:25.4787184Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4787295Z               "line": 9493
2026-06-22T00:46:25.4787403Z             },
2026-06-22T00:46:25.4787499Z             {
2026-06-22T00:46:25.4787629Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4787746Z               "line": 9609
2026-06-22T00:46:25.4787845Z             }
2026-06-22T00:46:25.4787946Z           ]
2026-06-22T00:46:25.4788039Z         }
2026-06-22T00:46:25.4788144Z       }
2026-06-22T00:46:25.4788244Z     },
2026-06-22T00:46:25.4788340Z     {
2026-06-22T00:46:25.4788449Z       "id": "REQ-EP-6",
2026-06-22T00:46:25.4790032Z       "title": "Gateway type acceptance: a Gateway-typed perch binds (api bind --type, open type system — un-hardcode the live_agent default), advertises/addressable like any endpoint, owns shells (owner validation not agent-family-gated), subscribes to digests, and is the user-msg identity gate's user-backed origin (REQ-MSG-5); in-tree mock-gateway fixture (R-DOCS-2 pattern, no downstream adapter code). Cross-node WAN Gateway-origin (registry endpoint_type trust) tracked by REQ-MSG-6",
2026-06-22T00:46:25.4790157Z       "requiredStages": [
2026-06-22T00:46:25.4790261Z         "doc",
2026-06-22T00:46:25.4790479Z         "impl",
2026-06-22T00:46:25.4790587Z         "unit"
2026-06-22T00:46:25.4790682Z       ],
2026-06-22T00:46:25.4790869Z       "stages": {
2026-06-22T00:46:25.4790973Z         "doc": {
2026-06-22T00:46:25.4791092Z           "complete": true,
2026-06-22T00:46:25.4791212Z           "evidence": [
2026-06-22T00:46:25.4791316Z             {
2026-06-22T00:46:25.4791431Z               "path": "CONTEXT.md",
2026-06-22T00:46:25.4791541Z               "line": 227
2026-06-22T00:46:25.4791645Z             }
2026-06-22T00:46:25.4791736Z           ]
2026-06-22T00:46:25.4791841Z         },
2026-06-22T00:46:25.4791950Z         "impl": {
2026-06-22T00:46:25.4792060Z           "complete": true,
2026-06-22T00:46:25.4792165Z           "evidence": [
2026-06-22T00:46:25.4792260Z             {
2026-06-22T00:46:25.4792405Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.4792508Z               "line": 212
2026-06-22T00:46:25.4792613Z             }
2026-06-22T00:46:25.4792705Z           ]
2026-06-22T00:46:25.4792813Z         },
2026-06-22T00:46:25.4792918Z         "int": {
2026-06-22T00:46:25.4793019Z           "complete": true,
2026-06-22T00:46:25.4793133Z           "evidence": [
2026-06-22T00:46:25.4793232Z             {
2026-06-22T00:46:25.4793385Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-22T00:46:25.4793490Z               "line": 18
2026-06-22T00:46:25.4793584Z             }
2026-06-22T00:46:25.4793690Z           ]
2026-06-22T00:46:25.4793781Z         },
2026-06-22T00:46:25.4793889Z         "unit": {
2026-06-22T00:46:25.4794010Z           "complete": true,
2026-06-22T00:46:25.4794109Z           "evidence": [
2026-06-22T00:46:25.4794218Z             {
2026-06-22T00:46:25.4794358Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T00:46:25.4794467Z               "line": 556
2026-06-22T00:46:25.4794571Z             },
2026-06-22T00:46:25.4794668Z             {
2026-06-22T00:46:25.4794801Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.4794915Z               "line": 904
2026-06-22T00:46:25.4795021Z             }
2026-06-22T00:46:25.4795119Z           ]
2026-06-22T00:46:25.4795235Z         }
2026-06-22T00:46:25.4795331Z       }
2026-06-22T00:46:25.4795429Z     },
2026-06-22T00:46:25.4795529Z     {
2026-06-22T00:46:25.4795648Z       "id": "REQ-EP-7",
2026-06-22T00:46:25.4797282Z       "title": "Durable live-role.md: a per-agent broad-purpose statement in tracked/agents/<id>/ beside live-context.md (replicates with the mind on the same a-<id> branch); renders FIRST at start-transition context injection (role -> live-context -> project-context); SOLE writer `spt endpoint role --overwrite <file>` — mechanical no-automated-writer guarantee (echo-commune ingest / signoff / Psyche reconcile structurally exclude it). The user-backed-origin hard gate on the writer is a deferred later tightening (rides the user-msg identity plumbing)",
2026-06-22T00:46:25.4797410Z       "requiredStages": [
2026-06-22T00:46:25.4797507Z         "doc",
2026-06-22T00:46:25.4797616Z         "impl",
2026-06-22T00:46:25.4797720Z         "unit"
2026-06-22T00:46:25.4797822Z       ],
2026-06-22T00:46:25.4797931Z       "stages": {
2026-06-22T00:46:25.4798035Z         "doc": {
2026-06-22T00:46:25.4798151Z           "complete": true,
2026-06-22T00:46:25.4798264Z           "evidence": [
2026-06-22T00:46:25.4798363Z             {
2026-06-22T00:46:25.4798482Z               "path": "CONTEXT.md",
2026-06-22T00:46:25.4798595Z               "line": 490
2026-06-22T00:46:25.4798694Z             }
2026-06-22T00:46:25.4798799Z           ]
2026-06-22T00:46:25.4798905Z         },
2026-06-22T00:46:25.4799090Z         "impl": {
2026-06-22T00:46:25.4799195Z           "complete": true,
2026-06-22T00:46:25.4799314Z           "evidence": [
2026-06-22T00:46:25.4799410Z             {
2026-06-22T00:46:25.4799553Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T00:46:25.4799667Z               "line": 505
2026-06-22T00:46:25.4799763Z             },
2026-06-22T00:46:25.4799862Z             {
2026-06-22T00:46:25.4800107Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T00:46:25.4800210Z               "line": 87
2026-06-22T00:46:25.4800422Z             },
2026-06-22T00:46:25.4800520Z             {
2026-06-22T00:46:25.4800689Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T00:46:25.4800788Z               "line": 81
2026-06-22T00:46:25.4800896Z             },
2026-06-22T00:46:25.4800996Z             {
2026-06-22T00:46:25.4801143Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T00:46:25.4801251Z               "line": 166
2026-06-22T00:46:25.4801356Z             },
2026-06-22T00:46:25.4801462Z             {
2026-06-22T00:46:25.4801580Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4801691Z               "line": 1645
2026-06-22T00:46:25.4801791Z             }
2026-06-22T00:46:25.4801890Z           ]
2026-06-22T00:46:25.4801996Z         },
2026-06-22T00:46:25.4802086Z         "int": {
2026-06-22T00:46:25.4802210Z           "complete": false,
2026-06-22T00:46:25.4802316Z           "evidence": []
2026-06-22T00:46:25.4802406Z         },
2026-06-22T00:46:25.4802510Z         "unit": {
2026-06-22T00:46:25.4802620Z           "complete": true,
2026-06-22T00:46:25.4802730Z           "evidence": [
2026-06-22T00:46:25.4802830Z             {
2026-06-22T00:46:25.4802969Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T00:46:25.4803078Z               "line": 623
2026-06-22T00:46:25.4803183Z             },
2026-06-22T00:46:25.4803274Z             {
2026-06-22T00:46:25.4803406Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T00:46:25.4803512Z               "line": 212
2026-06-22T00:46:25.4803618Z             },
2026-06-22T00:46:25.4803726Z             {
2026-06-22T00:46:25.4803863Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T00:46:25.4803974Z               "line": 307
2026-06-22T00:46:25.4804073Z             },
2026-06-22T00:46:25.4804173Z             {
2026-06-22T00:46:25.4804303Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4804407Z               "line": 7724
2026-06-22T00:46:25.4804522Z             },
2026-06-22T00:46:25.4804622Z             {
2026-06-22T00:46:25.4804750Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4804855Z               "line": 7751
2026-06-22T00:46:25.4804956Z             }
2026-06-22T00:46:25.4805056Z           ]
2026-06-22T00:46:25.4805151Z         }
2026-06-22T00:46:25.4805256Z       }
2026-06-22T00:46:25.4805356Z     },
2026-06-22T00:46:25.4805461Z     {
2026-06-22T00:46:25.4805571Z       "id": "REQ-FRONT-1",
2026-06-22T00:46:25.4805771Z       "title": "Day-one launcher/manager frontend (list/launch/attach/init)",
2026-06-22T00:46:25.4805882Z       "requiredStages": [],
2026-06-22T00:46:25.4805990Z       "stages": {
2026-06-22T00:46:25.4806080Z         "doc": {
2026-06-22T00:46:25.4806194Z           "complete": false,
2026-06-22T00:46:25.4806302Z           "evidence": []
2026-06-22T00:46:25.4806406Z         },
2026-06-22T00:46:25.4806516Z         "impl": {
2026-06-22T00:46:25.4806636Z           "complete": false,
2026-06-22T00:46:25.4806740Z           "evidence": []
2026-06-22T00:46:25.4806846Z         },
2026-06-22T00:46:25.4806941Z         "int": {
2026-06-22T00:46:25.4807059Z           "complete": false,
2026-06-22T00:46:25.4807170Z           "evidence": []
2026-06-22T00:46:25.4807270Z         },
2026-06-22T00:46:25.4807379Z         "unit": {
2026-06-22T00:46:25.4807485Z           "complete": false,
2026-06-22T00:46:25.4807599Z           "evidence": []
2026-06-22T00:46:25.4807694Z         }
2026-06-22T00:46:25.4807799Z       }
2026-06-22T00:46:25.4807894Z     },
2026-06-22T00:46:25.4807994Z     {
2026-06-22T00:46:25.4808124Z       "id": "REQ-HAZARD-ATTACH-WEDGE",
2026-06-22T00:46:25.4813529Z       "title": "A legitimately dead PTY child (real crash/kill) + an undrained operator pump must NOT wedge the broker for all other clients. ROOT (v0.12.0 real-harness defect): loopback attach output is a blocking write_all into a bounded 64KB tokio duplex (nethost.rs:1040,1090); when the operator's rc pump stops draining (tab closed) the buffer fills and write_all blocks forever (the 'loopback never hangs' assumption at nethost.rs:1103 is false), parking a worker in the 2-worker net runtime (nethost.rs:640); a couple of these saturate BOTH workers → every new attach / `endpoint run` stalls right after 'PUMP_IPC_READER: spawned' → 30s FIRST_EVENT_GRACE → 'no output / dead or wedged'; `daemon stop` cannot join the stuck workers. DISTINCT from the removed B1 path-(c) mutex deadlock. DISPOSITION = PROVE-DON'T-CHANGE (doyle GATE-PASS @e883f45, 2026-06-18): this ROOT is the SUPERSEDED v0.12.0 hypothesis — the post-L0 code ALREADY prevents the wedge, so NO fail-fast / worker-count code was added. serve_attach forwards fire-and-forget (net_stream_send op_id=None) and the broker-side send_stream is already BROKER-QUIC-DEADLINE-bounded (bounded_block_on, 10s); the loopback duplex is drained broker-INTERNALLY by the operator row's own read pump (RecvHalf::Loopback, retentive_cap==0 → evict-not-park) so a dead rc (a dropped IPC subscriber) never backs peer_w up; bounded_block_on parks the BROKER DISPATCH thread, not a net worker → no worker-pool exhaustion (full mechanism in the required_stages comment). Folds the status=online sub-check: a dead spt-hosted endpoint is marked OFFLINE within one reconcile tick on abrupt child death (broker exit-waiter reaps the session → B2 sees it absent) — PROVEN, no change. (v0.12.1)",
2026-06-22T00:46:25.4813873Z       "requiredStages": [
2026-06-22T00:46:25.4813990Z         "int"
2026-06-22T00:46:25.4814091Z       ],
2026-06-22T00:46:25.4814197Z       "stages": {
2026-06-22T00:46:25.4814290Z         "doc": {
2026-06-22T00:46:25.4814413Z           "complete": false,
2026-06-22T00:46:25.4814519Z           "evidence": []
2026-06-22T00:46:25.4814629Z         },
2026-06-22T00:46:25.4814738Z         "impl": {
2026-06-22T00:46:25.4814849Z           "complete": false,
2026-06-22T00:46:25.4814958Z           "evidence": []
2026-06-22T00:46:25.4815062Z         },
2026-06-22T00:46:25.4815173Z         "int": {
2026-06-22T00:46:25.4815282Z           "complete": true,
2026-06-22T00:46:25.4815392Z           "evidence": [
2026-06-22T00:46:25.4815497Z             {
2026-06-22T00:46:25.4815644Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-22T00:46:25.4815750Z               "line": 300
2026-06-22T00:46:25.4815854Z             }
2026-06-22T00:46:25.4815954Z           ]
2026-06-22T00:46:25.4816050Z         },
2026-06-22T00:46:25.4816150Z         "unit": {
2026-06-22T00:46:25.4816264Z           "complete": false,
2026-06-22T00:46:25.4816365Z           "evidence": []
2026-06-22T00:46:25.4816474Z         }
2026-06-22T00:46:25.4816569Z       }
2026-06-22T00:46:25.4816673Z     },
2026-06-22T00:46:25.4816773Z     {
2026-06-22T00:46:25.4816905Z       "id": "REQ-HAZARD-BIND-CWD-UNSET",
2026-06-22T00:46:25.4819502Z       "title": "A bound endpoint's `info.cwd` is SET at bind so a freshly-created perch appears under its own project tab. ROOT (found, v0.13.0): `info.cwd` is NEVER set on bind — `cmd_bind` (spt-hosted) and `bind_from_seed` (harness-hosted) never thread cwd into `establish_perch`/`rec.cwd`. FIX: `cmd_bind` reads its own `current_dir` (the broker spawned it in `project_cwd`); `bind_from_seed` passes `seed.cwd` (already captured at seed time, currently DISCARDED). DISTINCT from REQ-PICKER-HISTORY-FRESH (v0.12.1) — that unioned cwd-origin into picker MEMBERSHIP but tested merge_origin_project with a PROVIDED origin; it never asserted `info.cwd` is actually set on bind, so a real `endpoint run` perch still had an empty cwd and the union had nothing to union. This is the v0.12.1 P1 'appears under its own project right away' claim that was REFUTED in the changelog — delivered for real here. (v0.13.0)",
2026-06-22T00:46:25.4819640Z       "requiredStages": [
2026-06-22T00:46:25.4819748Z         "impl",
2026-06-22T00:46:25.4819848Z         "unit",
2026-06-22T00:46:25.4819953Z         "int"
2026-06-22T00:46:25.4820167Z       ],
2026-06-22T00:46:25.4820268Z       "stages": {
2026-06-22T00:46:25.4820378Z         "doc": {
2026-06-22T00:46:25.4820602Z           "complete": false,
2026-06-22T00:46:25.4820712Z           "evidence": []
2026-06-22T00:46:25.4820816Z         },
2026-06-22T00:46:25.4820917Z         "impl": {
2026-06-22T00:46:25.4821031Z           "complete": true,
2026-06-22T00:46:25.4821140Z           "evidence": [
2026-06-22T00:46:25.4821246Z             {
2026-06-22T00:46:25.4821398Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.4821509Z               "line": 257
2026-06-22T00:46:25.4821618Z             }
2026-06-22T00:46:25.4821708Z           ]
2026-06-22T00:46:25.4821814Z         },
2026-06-22T00:46:25.4821914Z         "int": {
2026-06-22T00:46:25.4822021Z           "complete": true,
2026-06-22T00:46:25.4822131Z           "evidence": [
2026-06-22T00:46:25.4822231Z             {
2026-06-22T00:46:25.4822391Z               "path": "crates/spt/tests/bind_cwd_project_e2e.rs",
2026-06-22T00:46:25.4822501Z               "line": 93
2026-06-22T00:46:25.4822606Z             }
2026-06-22T00:46:25.4822696Z           ]
2026-06-22T00:46:25.4822806Z         },
2026-06-22T00:46:25.4822911Z         "unit": {
2026-06-22T00:46:25.4823015Z           "complete": true,
2026-06-22T00:46:25.4823126Z           "evidence": [
2026-06-22T00:46:25.4823225Z             {
2026-06-22T00:46:25.4823368Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.4823474Z               "line": 802
2026-06-22T00:46:25.4823578Z             },
2026-06-22T00:46:25.4823683Z             {
2026-06-22T00:46:25.4823813Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.4823922Z               "line": 824
2026-06-22T00:46:25.4824021Z             },
2026-06-22T00:46:25.4824123Z             {
2026-06-22T00:46:25.4824260Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.4824376Z               "line": 855
2026-06-22T00:46:25.4824480Z             }
2026-06-22T00:46:25.4824589Z           ]
2026-06-22T00:46:25.4824691Z         }
2026-06-22T00:46:25.4824786Z       }
2026-06-22T00:46:25.4824888Z     },
2026-06-22T00:46:25.4824993Z     {
2026-06-22T00:46:25.4825133Z       "id": "REQ-HAZARD-BRAIN-RESPAWN-PATH",
2026-06-22T00:46:25.4827656Z       "title": "The broker respawns the brain onto the APPLIED bytes, not the renamed old binary: the candidate-binary default is the canonical exe path captured ONCE at broker start, never a per-spawn std::env::current_exe() — on Linux current_exe (readlink /proc/self/exe) is inode-tracking and follows the `apply` rename (spt -> spt.old-N), so a resident broker would respawn the brain onto OLD bytes while recording `applied` (Windows GetModuleFileName is path-at-start, so Windows was green; ADR-0018 Q3 silently assumed path-string semantics). Backstop: promotion gates on bytes — a trial promotes only if brain.ready exe_hash == the staged artifact hash for this platform, else auto-rollback + loud notif (readiness != new-bytes was the false-success that recorded applied:8 over a v0.4.0 brain on kitsubito, 2026-06-11). KNOWN-HAZARDS 6.11.",
2026-06-22T00:46:25.4827794Z       "requiredStages": [
2026-06-22T00:46:25.4827903Z         "doc",
2026-06-22T00:46:25.4828009Z         "impl",
2026-06-22T00:46:25.4828113Z         "unit",
2026-06-22T00:46:25.4828218Z         "int"
2026-06-22T00:46:25.4828323Z       ],
2026-06-22T00:46:25.4828428Z       "stages": {
2026-06-22T00:46:25.4828533Z         "doc": {
2026-06-22T00:46:25.4828643Z           "complete": true,
2026-06-22T00:46:25.4828747Z           "evidence": [
2026-06-22T00:46:25.4828848Z             {
2026-06-22T00:46:25.4829072Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T00:46:25.4829187Z               "line": 333
2026-06-22T00:46:25.4829282Z             }
2026-06-22T00:46:25.4829396Z           ]
2026-06-22T00:46:25.4829497Z         },
2026-06-22T00:46:25.4829606Z         "impl": {
2026-06-22T00:46:25.4829716Z           "complete": true,
2026-06-22T00:46:25.4829821Z           "evidence": [
2026-06-22T00:46:25.4830033Z             {
2026-06-22T00:46:25.4830182Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4830408Z               "line": 494
2026-06-22T00:46:25.4830504Z             },
2026-06-22T00:46:25.4830604Z             {
2026-06-22T00:46:25.4830751Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4830857Z               "line": 499
2026-06-22T00:46:25.4830966Z             },
2026-06-22T00:46:25.4831066Z             {
2026-06-22T00:46:25.4831205Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4831314Z               "line": 874
2026-06-22T00:46:25.4831409Z             },
2026-06-22T00:46:25.4831510Z             {
2026-06-22T00:46:25.4831652Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4831759Z               "line": 915
2026-06-22T00:46:25.4831863Z             },
2026-06-22T00:46:25.4831963Z             {
2026-06-22T00:46:25.4832102Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4832224Z               "line": 926
2026-06-22T00:46:25.4832330Z             },
2026-06-22T00:46:25.4832436Z             {
2026-06-22T00:46:25.4832581Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T00:46:25.4832691Z               "line": 358
2026-06-22T00:46:25.4832796Z             }
2026-06-22T00:46:25.4832884Z           ]
2026-06-22T00:46:25.4832989Z         },
2026-06-22T00:46:25.4833085Z         "int": {
2026-06-22T00:46:25.4833195Z           "complete": true,
2026-06-22T00:46:25.4833308Z           "evidence": [
2026-06-22T00:46:25.4833405Z             {
2026-06-22T00:46:25.4833556Z               "path": "crates/spt/tests/brain_respawn_rename.rs",
2026-06-22T00:46:25.4833667Z               "line": 30
2026-06-22T00:46:25.4833771Z             }
2026-06-22T00:46:25.4833876Z           ]
2026-06-22T00:46:25.4833972Z         },
2026-06-22T00:46:25.4834072Z         "unit": {
2026-06-22T00:46:25.4834186Z           "complete": true,
2026-06-22T00:46:25.4834296Z           "evidence": [
2026-06-22T00:46:25.4834396Z             {
2026-06-22T00:46:25.4834543Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4834654Z               "line": 1493
2026-06-22T00:46:25.4834758Z             },
2026-06-22T00:46:25.4834853Z             {
2026-06-22T00:46:25.4834998Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4835105Z               "line": 1518
2026-06-22T00:46:25.4835207Z             },
2026-06-22T00:46:25.4835317Z             {
2026-06-22T00:46:25.4835463Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4835568Z               "line": 1535
2026-06-22T00:46:25.4835673Z             },
2026-06-22T00:46:25.4835777Z             {
2026-06-22T00:46:25.4835925Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4836031Z               "line": 1578
2026-06-22T00:46:25.4836135Z             }
2026-06-22T00:46:25.4836241Z           ]
2026-06-22T00:46:25.4836345Z         }
2026-06-22T00:46:25.4836454Z       }
2026-06-22T00:46:25.4836555Z     },
2026-06-22T00:46:25.4836650Z     {
2026-06-22T00:46:25.4836807Z       "id": "REQ-HAZARD-BRAIN-RESTART-LIFECYCLE-REHYDRATE",
2026-06-22T00:46:25.4839447Z       "title": "B4 (deepest): a bare brain restart (broker survives) REHYDRATES the live-agent lifecycle so post-restart endpoints are hosted + attachable. Today resume_sessions (brainproc.rs:186, brain.rs:797-809) re-subscribes to the broker's PTY sessions but ALL BrainLifecycle instances (lifecycle.rs:58-130; the ephemeral brain.rs:254-275) are LOST on restart → a post-restart live endpoint gets no livehost → its Psyche is never (re)hosted and new spawns die / can't attach until a FULL daemon reset (operator: perri's brain kill+restart wedged everything until a full daemon kill). FIX: on brain startup, rebuild a BrainLifecycle per resumed live-capable session — load the manifest from the adapter registry → instantiate → start the pulse — the rehydrate the resume no-op cannot do. Composes with B2 (the reconcile re-hosts from the honest on-disk status after rehydrate). (v0.12.0)",
2026-06-22T00:46:25.4839771Z       "requiredStages": [],
2026-06-22T00:46:25.4839875Z       "stages": {
2026-06-22T00:46:25.4839980Z         "doc": {
2026-06-22T00:46:25.4840101Z           "complete": false,
2026-06-22T00:46:25.4840208Z           "evidence": []
2026-06-22T00:46:25.4840309Z         },
2026-06-22T00:46:25.4840415Z         "impl": {
2026-06-22T00:46:25.4840518Z           "complete": false,
2026-06-22T00:46:25.4840641Z           "evidence": []
2026-06-22T00:46:25.4840747Z         },
2026-06-22T00:46:25.4840854Z         "int": {
2026-06-22T00:46:25.4840963Z           "complete": false,
2026-06-22T00:46:25.4841083Z           "evidence": []
2026-06-22T00:46:25.4841174Z         },
2026-06-22T00:46:25.4841277Z         "unit": {
2026-06-22T00:46:25.4841384Z           "complete": false,
2026-06-22T00:46:25.4841493Z           "evidence": []
2026-06-22T00:46:25.4841602Z         }
2026-06-22T00:46:25.4841703Z       }
2026-06-22T00:46:25.4841798Z     },
2026-06-22T00:46:25.4841898Z     {
2026-06-22T00:46:25.4842061Z       "id": "REQ-HAZARD-BRAIN-RESTART-PSYCHE-DUP",
2026-06-22T00:46:25.4845705Z       "title": "A bare brain restart leaves EXACTLY ONE `{id}-psyche` process per endpoint — no duplicate. On an abrupt brain death stop_host never runs (the LiveSet + owned child handles die with the brain) and Breap's job/group only reaps at DAEMON stop, so the PRIOR brain's Psyche stays ALIVE; the respawned brain's reconcile re-hosts a SECOND Psyche and overwrites the `{id}-psyche` perch pid, leaving the old one untracked + alive = a duplicate that lingers until daemon-stop (the operator's 'brain kill+restart wedged everything'). FIX: at brain start, BEFORE the first reconcile re-hosts, reap any pre-existing `{id}-psyche` orphan — ID-SPECIFICALLY (recycle-safe on the shared box, where sibling agents share the `claude` basename): scoped-kill the recorded pid ONLY IF it is alive AND its exe basename == the adapter's psyche program (normalize_basename) AND its COMMAND LINE contains the full psyche id `<id>-psyche` (baked via {id}); a sibling never carries THIS id, and any unreadable signal FAILS SAFE (decline to reap — a missed dup is bounded by Breap, a wrong-kill is catastrophic). CAVEAT: the cmdline carries `<id>-psyche` only when the adapter's psyche_init.command uses {id} (the norm); a non-{id} adapter safely MISSES the reap (today's behavior, Breap bounds it) — never a wrong-kill. (v0.12.0)",
2026-06-22T00:46:25.4845849Z       "requiredStages": [
2026-06-22T00:46:25.4845943Z         "impl",
2026-06-22T00:46:25.4846047Z         "unit",
2026-06-22T00:46:25.4846147Z         "int"
2026-06-22T00:46:25.4846253Z       ],
2026-06-22T00:46:25.4846356Z       "stages": {
2026-06-22T00:46:25.4846462Z         "doc": {
2026-06-22T00:46:25.4846576Z           "complete": false,
2026-06-22T00:46:25.4846685Z           "evidence": []
2026-06-22T00:46:25.4846791Z         },
2026-06-22T00:46:25.4846882Z         "impl": {
2026-06-22T00:46:25.4847005Z           "complete": true,
2026-06-22T00:46:25.4847115Z           "evidence": [
2026-06-22T00:46:25.4847220Z             {
2026-06-22T00:46:25.4847372Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.4847474Z               "line": 570
2026-06-22T00:46:25.4847577Z             },
2026-06-22T00:46:25.4847677Z             {
2026-06-22T00:46:25.4847826Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.4847935Z               "line": 594
2026-06-22T00:46:25.4848035Z             },
2026-06-22T00:46:25.4848132Z             {
2026-06-22T00:46:25.4848268Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.4848387Z               "line": 620
2026-06-22T00:46:25.4848486Z             },
2026-06-22T00:46:25.4848595Z             {
2026-06-22T00:46:25.4848743Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.4848848Z               "line": 679
2026-06-22T00:46:25.4849019Z             },
2026-06-22T00:46:25.4849219Z             {
2026-06-22T00:46:25.4849358Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T00:46:25.4849538Z               "line": 89
2026-06-22T00:46:25.4849639Z             },
2026-06-22T00:46:25.4849744Z             {
2026-06-22T00:46:25.4849872Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T00:46:25.4849992Z               "line": 134
2026-06-22T00:46:25.4850082Z             }
2026-06-22T00:46:25.4850192Z           ]
2026-06-22T00:46:25.4850283Z         },
2026-06-22T00:46:25.4850383Z         "int": {
2026-06-22T00:46:25.4850487Z           "complete": true,
2026-06-22T00:46:25.4850598Z           "evidence": [
2026-06-22T00:46:25.4850703Z             {
2026-06-22T00:46:25.4850879Z               "path": "crates/spt/tests/brain_restart_psyche_dup_e2e.rs",
2026-06-22T00:46:25.4850985Z               "line": 20
2026-06-22T00:46:25.4851088Z             }
2026-06-22T00:46:25.4851196Z           ]
2026-06-22T00:46:25.4851297Z         },
2026-06-22T00:46:25.4851400Z         "unit": {
2026-06-22T00:46:25.4851509Z           "complete": true,
2026-06-22T00:46:25.4851624Z           "evidence": [
2026-06-22T00:46:25.4851729Z             {
2026-06-22T00:46:25.4851871Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.4851972Z               "line": 1047
2026-06-22T00:46:25.4852081Z             },
2026-06-22T00:46:25.4852186Z             {
2026-06-22T00:46:25.4852320Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T00:46:25.4852424Z               "line": 445
2026-06-22T00:46:25.4852535Z             }
2026-06-22T00:46:25.4852635Z           ]
2026-06-22T00:46:25.4852735Z         }
2026-06-22T00:46:25.4852840Z       }
2026-06-22T00:46:25.4852940Z     },
2026-06-22T00:46:25.4853040Z     {
2026-06-22T00:46:25.4853184Z       "id": "REQ-HAZARD-BROKER-PROCESS-ISOLATION",
2026-06-22T00:46:25.4855789Z       "title": "Broker and brain are separate processes: the broker runs as its own long-lived per-machine process that survives every brain restart, so a routine (brain-only) self-update restarts the brain onto the swapped binary while every hosted endpoint (PTY child, live QUIC conn, listening socket) stays untouched at the PROCESS level. The in-process-thread broker (daemon.rs:165-170) is a regression that silently unrealizes REQ-UPD-3 — apply degrades to an in-process Brain::handoff no-op and new code does not run until an unrelated restart (KNOWN-HAZARDS 6.7). Evidence must prove process-level survival (SPIKE-01/03 productionized as int: PTY child + live QUIC survive a brain-PROCESS restart onto a swapped binary), re-pointing the regression-masked in-process int tags currently on REQ-DAEMON-2 / REQ-UPD-3 (ADR-0018).",
2026-06-22T00:46:25.4855921Z       "requiredStages": [
2026-06-22T00:46:25.4856027Z         "doc",
2026-06-22T00:46:25.4856132Z         "impl",
2026-06-22T00:46:25.4856245Z         "unit",
2026-06-22T00:46:25.4856337Z         "int"
2026-06-22T00:46:25.4856442Z       ],
2026-06-22T00:46:25.4856545Z       "stages": {
2026-06-22T00:46:25.4856659Z         "doc": {
2026-06-22T00:46:25.4856780Z           "complete": true,
2026-06-22T00:46:25.4856893Z           "evidence": [
2026-06-22T00:46:25.4857002Z             {
2026-06-22T00:46:25.4857132Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T00:46:25.4857241Z               "line": 302
2026-06-22T00:46:25.4857332Z             }
2026-06-22T00:46:25.4857437Z           ]
2026-06-22T00:46:25.4857542Z         },
2026-06-22T00:46:25.4857646Z         "impl": {
2026-06-22T00:46:25.4857766Z           "complete": true,
2026-06-22T00:46:25.4857875Z           "evidence": [
2026-06-22T00:46:25.4857976Z             {
2026-06-22T00:46:25.4858118Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T00:46:25.4858228Z               "line": 108
2026-06-22T00:46:25.4858329Z             },
2026-06-22T00:46:25.4858429Z             {
2026-06-22T00:46:25.4858572Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T00:46:25.4858678Z               "line": 921
2026-06-22T00:46:25.4858876Z             },
2026-06-22T00:46:25.4859052Z             {
2026-06-22T00:46:25.4859293Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T00:46:25.4859399Z               "line": 1137
2026-06-22T00:46:25.4859507Z             },
2026-06-22T00:46:25.4859608Z             {
2026-06-22T00:46:25.4859751Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4859855Z               "line": 23
2026-06-22T00:46:25.4859962Z             },
2026-06-22T00:46:25.4860057Z             {
2026-06-22T00:46:25.4860204Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4860309Z               "line": 113
2026-06-22T00:46:25.4860418Z             },
2026-06-22T00:46:25.4860518Z             {
2026-06-22T00:46:25.4860666Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4860771Z               "line": 158
2026-06-22T00:46:25.4860863Z             },
2026-06-22T00:46:25.4860958Z             {
2026-06-22T00:46:25.4861109Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4861221Z               "line": 218
2026-06-22T00:46:25.4861328Z             },
2026-06-22T00:46:25.4861424Z             {
2026-06-22T00:46:25.4861564Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4861672Z               "line": 261
2026-06-22T00:46:25.4861775Z             },
2026-06-22T00:46:25.4861876Z             {
2026-06-22T00:46:25.4862017Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4862122Z               "line": 275
2026-06-22T00:46:25.4862232Z             },
2026-06-22T00:46:25.4862336Z             {
2026-06-22T00:46:25.4862470Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4862575Z               "line": 320
2026-06-22T00:46:25.4862665Z             },
2026-06-22T00:46:25.4862766Z             {
2026-06-22T00:46:25.4862904Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4863023Z               "line": 347
2026-06-22T00:46:25.4863129Z             },
2026-06-22T00:46:25.4863228Z             {
2026-06-22T00:46:25.4863376Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4863486Z               "line": 359
2026-06-22T00:46:25.4863590Z             },
2026-06-22T00:46:25.4863690Z             {
2026-06-22T00:46:25.4863839Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4863948Z               "line": 373
2026-06-22T00:46:25.4864049Z             },
2026-06-22T00:46:25.4864154Z             {
2026-06-22T00:46:25.4864290Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4864405Z               "line": 400
2026-06-22T00:46:25.4864508Z             },
2026-06-22T00:46:25.4864607Z             {
2026-06-22T00:46:25.4864751Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4864861Z               "line": 643
2026-06-22T00:46:25.4864969Z             },
2026-06-22T00:46:25.4868064Z             {
2026-06-22T00:46:25.4868250Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4868373Z               "line": 989
2026-06-22T00:46:25.4868483Z             },
2026-06-22T00:46:25.4868584Z             {
2026-06-22T00:46:25.4868727Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.4868832Z               "line": 328
2026-06-22T00:46:25.4868932Z             },
2026-06-22T00:46:25.4869112Z             {
2026-06-22T00:46:25.4869261Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.4869364Z               "line": 1292
2026-06-22T00:46:25.4869464Z             },
2026-06-22T00:46:25.4869555Z             {
2026-06-22T00:46:25.4869695Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.4869790Z               "line": 1364
2026-06-22T00:46:25.4869897Z             },
2026-06-22T00:46:25.4869996Z             {
2026-06-22T00:46:25.4870134Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.4870377Z               "line": 1376
2026-06-22T00:46:25.4870478Z             },
2026-06-22T00:46:25.4870668Z             {
2026-06-22T00:46:25.4870798Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.4870907Z               "line": 2116
2026-06-22T00:46:25.4871011Z             },
2026-06-22T00:46:25.4871098Z             {
2026-06-22T00:46:25.4871245Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.4871355Z               "line": 188
2026-06-22T00:46:25.4871456Z             },
2026-06-22T00:46:25.4871555Z             {
2026-06-22T00:46:25.4871699Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.4871804Z               "line": 265
2026-06-22T00:46:25.4871903Z             },
2026-06-22T00:46:25.4872004Z             {
2026-06-22T00:46:25.4872139Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.4872246Z               "line": 276
2026-06-22T00:46:25.4872340Z             },
2026-06-22T00:46:25.4872446Z             {
2026-06-22T00:46:25.4872587Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.4872697Z               "line": 329
2026-06-22T00:46:25.4872797Z             },
2026-06-22T00:46:25.4872896Z             {
2026-06-22T00:46:25.4873040Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T00:46:25.4873135Z               "line": 56
2026-06-22T00:46:25.4873239Z             },
2026-06-22T00:46:25.4873341Z             {
2026-06-22T00:46:25.4873479Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T00:46:25.4873592Z               "line": 188
2026-06-22T00:46:25.4873689Z             },
2026-06-22T00:46:25.4873793Z             {
2026-06-22T00:46:25.4873940Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-22T00:46:25.4874056Z               "line": 82
2026-06-22T00:46:25.4874150Z             },
2026-06-22T00:46:25.4874246Z             {
2026-06-22T00:46:25.4874394Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T00:46:25.4874508Z               "line": 308
2026-06-22T00:46:25.4874614Z             },
2026-06-22T00:46:25.4874723Z             {
2026-06-22T00:46:25.4874855Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T00:46:25.4874965Z               "line": 424
2026-06-22T00:46:25.4875050Z             },
2026-06-22T00:46:25.4875149Z             {
2026-06-22T00:46:25.4875277Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.4875383Z               "line": 2006
2026-06-22T00:46:25.4875492Z             }
2026-06-22T00:46:25.4875592Z           ]
2026-06-22T00:46:25.4875697Z         },
2026-06-22T00:46:25.4875797Z         "int": {
2026-06-22T00:46:25.4875907Z           "complete": true,
2026-06-22T00:46:25.4876012Z           "evidence": [
2026-06-22T00:46:25.4876121Z             {
2026-06-22T00:46:25.4876266Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-22T00:46:25.4876374Z               "line": 57
2026-06-22T00:46:25.4876479Z             },
2026-06-22T00:46:25.4876585Z             {
2026-06-22T00:46:25.4876713Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-22T00:46:25.4876832Z               "line": 41
2026-06-22T00:46:25.4876937Z             }
2026-06-22T00:46:25.4877041Z           ]
2026-06-22T00:46:25.4877132Z         },
2026-06-22T00:46:25.4877229Z         "unit": {
2026-06-22T00:46:25.4877337Z           "complete": true,
2026-06-22T00:46:25.4877442Z           "evidence": [
2026-06-22T00:46:25.4877544Z             {
2026-06-22T00:46:25.4877689Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T00:46:25.4877794Z               "line": 532
2026-06-22T00:46:25.4877895Z             },
2026-06-22T00:46:25.4877994Z             {
2026-06-22T00:46:25.4878137Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T00:46:25.4878243Z               "line": 757
2026-06-22T00:46:25.4878347Z             },
2026-06-22T00:46:25.4878447Z             {
2026-06-22T00:46:25.4878586Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4878771Z               "line": 1067
2026-06-22T00:46:25.4878877Z             },
2026-06-22T00:46:25.4879121Z             {
2026-06-22T00:46:25.4879262Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4879372Z               "line": 1101
2026-06-22T00:46:25.4879473Z             },
2026-06-22T00:46:25.4879572Z             {
2026-06-22T00:46:25.4879716Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4879817Z               "line": 1143
2026-06-22T00:46:25.4879915Z             },
2026-06-22T00:46:25.4880020Z             {
2026-06-22T00:46:25.4880162Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4880279Z               "line": 1215
2026-06-22T00:46:25.4880390Z             },
2026-06-22T00:46:25.4880480Z             {
2026-06-22T00:46:25.4880627Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4880733Z               "line": 1228
2026-06-22T00:46:25.4880838Z             },
2026-06-22T00:46:25.4880927Z             {
2026-06-22T00:46:25.4881067Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4881186Z               "line": 1251
2026-06-22T00:46:25.4881285Z             },
2026-06-22T00:46:25.4881387Z             {
2026-06-22T00:46:25.4881524Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4881629Z               "line": 1277
2026-06-22T00:46:25.4881730Z             },
2026-06-22T00:46:25.4881825Z             {
2026-06-22T00:46:25.4881968Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4882069Z               "line": 1291
2026-06-22T00:46:25.4882173Z             },
2026-06-22T00:46:25.4882264Z             {
2026-06-22T00:46:25.4882407Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4882507Z               "line": 1315
2026-06-22T00:46:25.4882608Z             },
2026-06-22T00:46:25.4882713Z             {
2026-06-22T00:46:25.4882854Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4882968Z               "line": 1447
2026-06-22T00:46:25.4883072Z             },
2026-06-22T00:46:25.4883165Z             {
2026-06-22T00:46:25.4883299Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4883410Z               "line": 1623
2026-06-22T00:46:25.4883514Z             },
2026-06-22T00:46:25.4883610Z             {
2026-06-22T00:46:25.4883748Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4883852Z               "line": 1678
2026-06-22T00:46:25.4883958Z             },
2026-06-22T00:46:25.4884063Z             {
2026-06-22T00:46:25.4884201Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4884316Z               "line": 1724
2026-06-22T00:46:25.4884411Z             },
2026-06-22T00:46:25.4884501Z             {
2026-06-22T00:46:25.4884640Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4884749Z               "line": 1769
2026-06-22T00:46:25.4884850Z             },
2026-06-22T00:46:25.4884950Z             {
2026-06-22T00:46:25.4885102Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4885208Z               "line": 1813
2026-06-22T00:46:25.4885307Z             },
2026-06-22T00:46:25.4885406Z             {
2026-06-22T00:46:25.4885554Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.4885656Z               "line": 1855
2026-06-22T00:46:25.4885756Z             },
2026-06-22T00:46:25.4885862Z             {
2026-06-22T00:46:25.4886004Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.4886114Z               "line": 2470
2026-06-22T00:46:25.4886215Z             },
2026-06-22T00:46:25.4886314Z             {
2026-06-22T00:46:25.4886458Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T00:46:25.4886567Z               "line": 217
2026-06-22T00:46:25.4886671Z             },
2026-06-22T00:46:25.4886868Z             {
2026-06-22T00:46:25.4887005Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T00:46:25.4887201Z               "line": 233
2026-06-22T00:46:25.4887301Z             },
2026-06-22T00:46:25.4887407Z             {
2026-06-22T00:46:25.4887544Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T00:46:25.4887649Z               "line": 254
2026-06-22T00:46:25.4887751Z             },
2026-06-22T00:46:25.4887840Z             {
2026-06-22T00:46:25.4887974Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T00:46:25.4888080Z               "line": 265
2026-06-22T00:46:25.4888174Z             },
2026-06-22T00:46:25.4888273Z             {
2026-06-22T00:46:25.4888412Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T00:46:25.4888522Z               "line": 278
2026-06-22T00:46:25.4888625Z             },
2026-06-22T00:46:25.4888726Z             {
2026-06-22T00:46:25.4888855Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T00:46:25.4889042Z               "line": 289
2026-06-22T00:46:25.4889146Z             },
2026-06-22T00:46:25.4889255Z             {
2026-06-22T00:46:25.4889394Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T00:46:25.4889508Z               "line": 301
2026-06-22T00:46:25.4889608Z             },
2026-06-22T00:46:25.4889700Z             {
2026-06-22T00:46:25.4889842Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T00:46:25.4889952Z               "line": 312
2026-06-22T00:46:25.4890048Z             },
2026-06-22T00:46:25.4890152Z             {
2026-06-22T00:46:25.4890291Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T00:46:25.4890395Z               "line": 323
2026-06-22T00:46:25.4890494Z             },
2026-06-22T00:46:25.4890594Z             {
2026-06-22T00:46:25.4890736Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T00:46:25.4890844Z               "line": 332
2026-06-22T00:46:25.4890935Z             },
2026-06-22T00:46:25.4891041Z             {
2026-06-22T00:46:25.4891173Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T00:46:25.4891284Z               "line": 342
2026-06-22T00:46:25.4891388Z             },
2026-06-22T00:46:25.4891488Z             {
2026-06-22T00:46:25.4891627Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T00:46:25.4891732Z               "line": 358
2026-06-22T00:46:25.4891831Z             },
2026-06-22T00:46:25.4891933Z             {
2026-06-22T00:46:25.4892066Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T00:46:25.4892175Z               "line": 758
2026-06-22T00:46:25.4892271Z             },
2026-06-22T00:46:25.4892366Z             {
2026-06-22T00:46:25.4892509Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T00:46:25.4892615Z               "line": 794
2026-06-22T00:46:25.4892713Z             },
2026-06-22T00:46:25.4892814Z             {
2026-06-22T00:46:25.4892948Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T00:46:25.4893057Z               "line": 966
2026-06-22T00:46:25.4893163Z             },
2026-06-22T00:46:25.4893268Z             {
2026-06-22T00:46:25.4893409Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-22T00:46:25.4893514Z               "line": 145
2026-06-22T00:46:25.4893618Z             },
2026-06-22T00:46:25.4893711Z             {
2026-06-22T00:46:25.4893850Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-22T00:46:25.4893961Z               "line": 224
2026-06-22T00:46:25.4894059Z             },
2026-06-22T00:46:25.4894160Z             {
2026-06-22T00:46:25.4894304Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-22T00:46:25.4894403Z               "line": 293
2026-06-22T00:46:25.4894504Z             },
2026-06-22T00:46:25.4894604Z             {
2026-06-22T00:46:25.4894751Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-22T00:46:25.4894862Z               "line": 17
2026-06-22T00:46:25.4895075Z             },
2026-06-22T00:46:25.4895181Z             {
2026-06-22T00:46:25.4895323Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-22T00:46:25.4895520Z               "line": 104
2026-06-22T00:46:25.4895624Z             }
2026-06-22T00:46:25.4895720Z           ]
2026-06-22T00:46:25.4895825Z         }
2026-06-22T00:46:25.4895923Z       }
2026-06-22T00:46:25.4896022Z     },
2026-06-22T00:46:25.4896114Z     {
2026-06-22T00:46:25.4896254Z       "id": "REQ-HAZARD-BROKER-QUIC-DEADLINE",
2026-06-22T00:46:25.4899382Z       "title": "The broker bounds every brain-waiting QUIC op (dial / open_stream / send_stream) so a black-holed or dead peer fails PROMPTLY with an ORDINARY error the broker REPLIES, never an unbounded await. The bound (< the brain's 30s PUMP_PEER_IO_TIMEOUT so the BROKER fires first) surfaces to the pump as a normal broker error reply → peer_outcome's non-TimedOut arm → drop conn + redial next tick, the round CONTINUES and the heartbeat keeps advancing — it must NEVER manifest as the brain's own read-deadline (the A-half poison → supervised-restart path REQ-HAZARD-PUMP-IPC-DEADLINE guards). Exactly-once is preserved: a timed-out journaled op fails INSIDE its apply_once closure so no phantom conn_id/stream_id is recorded and a fresh tick re-dials cleanly. The happy path is unchanged (a live peer completes with zero added latency; the bound only bites a non-responsive peer). This is the ROOT-cause cure for the 2.2h hfenduleam pump wedge — a dead roster peer whose QUIC path the broker awaited unbounded — recurring on hfenduleam 2026-06-16.",
2026-06-22T00:46:25.4899533Z       "requiredStages": [
2026-06-22T00:46:25.4899631Z         "doc",
2026-06-22T00:46:25.4899735Z         "impl",
2026-06-22T00:46:25.4899839Z         "unit",
2026-06-22T00:46:25.4899941Z         "int"
2026-06-22T00:46:25.4900035Z       ],
2026-06-22T00:46:25.4900144Z       "stages": {
2026-06-22T00:46:25.4900236Z         "doc": {
2026-06-22T00:46:25.4900345Z           "complete": true,
2026-06-22T00:46:25.4900450Z           "evidence": [
2026-06-22T00:46:25.4900551Z             {
2026-06-22T00:46:25.4900688Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T00:46:25.4900788Z               "line": 388
2026-06-22T00:46:25.4900880Z             }
2026-06-22T00:46:25.4900979Z           ]
2026-06-22T00:46:25.4901073Z         },
2026-06-22T00:46:25.4901173Z         "impl": {
2026-06-22T00:46:25.4901287Z           "complete": true,
2026-06-22T00:46:25.4901395Z           "evidence": [
2026-06-22T00:46:25.4901495Z             {
2026-06-22T00:46:25.4901644Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T00:46:25.4901752Z               "line": 823
2026-06-22T00:46:25.4901858Z             },
2026-06-22T00:46:25.4901958Z             {
2026-06-22T00:46:25.4902100Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T00:46:25.4902211Z               "line": 846
2026-06-22T00:46:25.4902311Z             }
2026-06-22T00:46:25.4902410Z           ]
2026-06-22T00:46:25.4902512Z         },
2026-06-22T00:46:25.4902621Z         "int": {
2026-06-22T00:46:25.4902725Z           "complete": true,
2026-06-22T00:46:25.4902822Z           "evidence": [
2026-06-22T00:46:25.4902931Z             {
2026-06-22T00:46:25.4903079Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-22T00:46:25.4903193Z               "line": 228
2026-06-22T00:46:25.4903298Z             },
2026-06-22T00:46:25.4903394Z             {
2026-06-22T00:46:25.4903532Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-22T00:46:25.4903632Z               "line": 468
2026-06-22T00:46:25.4903732Z             }
2026-06-22T00:46:25.4903833Z           ]
2026-06-22T00:46:25.4903931Z         },
2026-06-22T00:46:25.4904035Z         "unit": {
2026-06-22T00:46:25.4904145Z           "complete": true,
2026-06-22T00:46:25.4904258Z           "evidence": [
2026-06-22T00:46:25.4904357Z             {
2026-06-22T00:46:25.4904501Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T00:46:25.4904591Z               "line": 1583
2026-06-22T00:46:25.4904816Z             }
2026-06-22T00:46:25.4904915Z           ]
2026-06-22T00:46:25.4905016Z         }
2026-06-22T00:46:25.4905207Z       }
2026-06-22T00:46:25.4905302Z     },
2026-06-22T00:46:25.4905393Z     {
2026-06-22T00:46:25.4905536Z       "id": "REQ-HAZARD-BROKER-SEED-WIRE-SKEW",
2026-06-22T00:46:25.4909167Z       "title": "A daemon-state wire-format change (e.g. the v0.9.0 adapter-agnostic Seed) does NOT take effect until a DELIBERATE full broker restart: the broker serves the seed-control channel and is RESIDENT across a brain-only self-update (ADR-0004 no-terminate-during-update forbids auto-killing it), so a NEW-version CLI talking to a still-resident OLD broker fails the seed handshake — the old broker cannot deserialize the new Seed (its formerly-required `adapter` field is gone) and drops the conn without an ack, which surfaces to the CLI as a raw UnexpectedEof 'failed to fill whole buffer'. spt-core must (a) surface an ACTIONABLE diagnostic on that seed-ack EOF (name the stale-broker cause + the `spt daemon stop` fix — the broker restarts on the next api call), never the cryptic io error; and (b) document the operational rule (a deliberate broker restart is required on any daemon-state wire change — NOT automatic) + the FORWARD discipline (daemon-state/Seed schema changes stay additive + serde-default so a resident OLD broker tolerates a NEW CLI across a brain-only update; note this would NOT have rescued 0.9.0 itself, since the old broker's `adapter` was a required field). perri PREP-4 FINDING 1 (v0.9.0 CLI vs stale 0.8.x broker).",
2026-06-22T00:46:25.4909309Z       "requiredStages": [
2026-06-22T00:46:25.4909417Z         "doc",
2026-06-22T00:46:25.4909522Z         "impl",
2026-06-22T00:46:25.4909624Z         "unit"
2026-06-22T00:46:25.4909722Z       ],
2026-06-22T00:46:25.4909832Z       "stages": {
2026-06-22T00:46:25.4909932Z         "doc": {
2026-06-22T00:46:25.4910041Z           "complete": true,
2026-06-22T00:46:25.4910152Z           "evidence": [
2026-06-22T00:46:25.4910242Z             {
2026-06-22T00:46:25.4910361Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T00:46:25.4910476Z               "line": 395
2026-06-22T00:46:25.4910581Z             }
2026-06-22T00:46:25.4910680Z           ]
2026-06-22T00:46:25.4910782Z         },
2026-06-22T00:46:25.4910881Z         "impl": {
2026-06-22T00:46:25.4910990Z           "complete": true,
2026-06-22T00:46:25.4911097Z           "evidence": [
2026-06-22T00:46:25.4911201Z             {
2026-06-22T00:46:25.4911339Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.4911445Z               "line": 75
2026-06-22T00:46:25.4911548Z             }
2026-06-22T00:46:25.4911657Z           ]
2026-06-22T00:46:25.4911747Z         },
2026-06-22T00:46:25.4911856Z         "int": {
2026-06-22T00:46:25.4911965Z           "complete": false,
2026-06-22T00:46:25.4912079Z           "evidence": []
2026-06-22T00:46:25.4912185Z         },
2026-06-22T00:46:25.4912289Z         "unit": {
2026-06-22T00:46:25.4912394Z           "complete": true,
2026-06-22T00:46:25.4912504Z           "evidence": [
2026-06-22T00:46:25.4912613Z             {
2026-06-22T00:46:25.4912748Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.4912866Z               "line": 632
2026-06-22T00:46:25.4912965Z             }
2026-06-22T00:46:25.4913063Z           ]
2026-06-22T00:46:25.4913162Z         }
2026-06-22T00:46:25.4913257Z       }
2026-06-22T00:46:25.4913358Z     },
2026-06-22T00:46:25.4913452Z     {
2026-06-22T00:46:25.4913591Z       "id": "REQ-HAZARD-CASCADE-WIPE-GUARD",
2026-06-22T00:46:25.4913786Z       "title": "No hard-delete of a parent hosting non-empty children (6.3)",
2026-06-22T00:46:25.4913901Z       "requiredStages": [
2026-06-22T00:46:25.4914002Z         "impl",
2026-06-22T00:46:25.4914101Z         "unit"
2026-06-22T00:46:25.4914201Z       ],
2026-06-22T00:46:25.4914302Z       "stages": {
2026-06-22T00:46:25.4914411Z         "doc": {
2026-06-22T00:46:25.4914534Z           "complete": false,
2026-06-22T00:46:25.4914752Z           "evidence": []
2026-06-22T00:46:25.4914855Z         },
2026-06-22T00:46:25.4914956Z         "impl": {
2026-06-22T00:46:25.4915166Z           "complete": true,
2026-06-22T00:46:25.4915271Z           "evidence": [
2026-06-22T00:46:25.4915376Z             {
2026-06-22T00:46:25.4915513Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.4915624Z               "line": 172
2026-06-22T00:46:25.4915734Z             },
2026-06-22T00:46:25.4915833Z             {
2026-06-22T00:46:25.4915972Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T00:46:25.4916077Z               "line": 18
2026-06-22T00:46:25.4916181Z             },
2026-06-22T00:46:25.4916287Z             {
2026-06-22T00:46:25.4916420Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T00:46:25.4916525Z               "line": 100
2026-06-22T00:46:25.4916621Z             }
2026-06-22T00:46:25.4916724Z           ]
2026-06-22T00:46:25.4916821Z         },
2026-06-22T00:46:25.4916926Z         "int": {
2026-06-22T00:46:25.4917044Z           "complete": false,
2026-06-22T00:46:25.4917148Z           "evidence": []
2026-06-22T00:46:25.4917258Z         },
2026-06-22T00:46:25.4917351Z         "unit": {
2026-06-22T00:46:25.4917465Z           "complete": true,
2026-06-22T00:46:25.4917566Z           "evidence": [
2026-06-22T00:46:25.4917662Z             {
2026-06-22T00:46:25.4917804Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.4917900Z               "line": 857
2026-06-22T00:46:25.4918009Z             },
2026-06-22T00:46:25.4918109Z             {
2026-06-22T00:46:25.4918243Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T00:46:25.4918343Z               "line": 161
2026-06-22T00:46:25.4918443Z             },
2026-06-22T00:46:25.4918544Z             {
2026-06-22T00:46:25.4918676Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T00:46:25.4918787Z               "line": 233
2026-06-22T00:46:25.4918873Z             }
2026-06-22T00:46:25.4919053Z           ]
2026-06-22T00:46:25.4919159Z         }
2026-06-22T00:46:25.4919258Z       }
2026-06-22T00:46:25.4919363Z     },
2026-06-22T00:46:25.4919469Z     {
2026-06-22T00:46:25.4919611Z       "id": "REQ-HAZARD-CHILD-CONSOLE-FLASH",
2026-06-22T00:46:25.4920049Z       "title": "Console-subsystem children of the console-less daemon spawn with CREATE_NO_WINDOW, or each spawn flashes a visible blank window on the user's desktop (5.8)",
2026-06-22T00:46:25.4920169Z       "requiredStages": [
2026-06-22T00:46:25.4920272Z         "impl",
2026-06-22T00:46:25.4920373Z         "unit"
2026-06-22T00:46:25.4920478Z       ],
2026-06-22T00:46:25.4920578Z       "stages": {
2026-06-22T00:46:25.4920678Z         "doc": {
2026-06-22T00:46:25.4920784Z           "complete": true,
2026-06-22T00:46:25.4920893Z           "evidence": [
2026-06-22T00:46:25.4920993Z             {
2026-06-22T00:46:25.4921122Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T00:46:25.4921235Z               "line": 220
2026-06-22T00:46:25.4921337Z             }
2026-06-22T00:46:25.4921432Z           ]
2026-06-22T00:46:25.4921532Z         },
2026-06-22T00:46:25.4921637Z         "impl": {
2026-06-22T00:46:25.4921757Z           "complete": true,
2026-06-22T00:46:25.4921870Z           "evidence": [
2026-06-22T00:46:25.4921971Z             {
2026-06-22T00:46:25.4922118Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T00:46:25.4922231Z               "line": 316
2026-06-22T00:46:25.4922337Z             },
2026-06-22T00:46:25.4922440Z             {
2026-06-22T00:46:25.4922577Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T00:46:25.4922692Z               "line": 356
2026-06-22T00:46:25.4922782Z             },
2026-06-22T00:46:25.4922882Z             {
2026-06-22T00:46:25.4923031Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T00:46:25.4923130Z               "line": 578
2026-06-22T00:46:25.4923235Z             },
2026-06-22T00:46:25.4923336Z             {
2026-06-22T00:46:25.4923469Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T00:46:25.4923669Z               "line": 77
2026-06-22T00:46:25.4923869Z             }
2026-06-22T00:46:25.4923975Z           ]
2026-06-22T00:46:25.4924075Z         },
2026-06-22T00:46:25.4924179Z         "int": {
2026-06-22T00:46:25.4924285Z           "complete": false,
2026-06-22T00:46:25.4924389Z           "evidence": []
2026-06-22T00:46:25.4924499Z         },
2026-06-22T00:46:25.4924605Z         "unit": {
2026-06-22T00:46:25.4924704Z           "complete": true,
2026-06-22T00:46:25.4924814Z           "evidence": [
2026-06-22T00:46:25.4924906Z             {
2026-06-22T00:46:25.4925047Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T00:46:25.4925161Z               "line": 747
2026-06-22T00:46:25.4925270Z             },
2026-06-22T00:46:25.4925368Z             {
2026-06-22T00:46:25.4925511Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T00:46:25.4925617Z               "line": 785
2026-06-22T00:46:25.4925731Z             },
2026-06-22T00:46:25.4925826Z             {
2026-06-22T00:46:25.4925960Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T00:46:25.4926078Z               "line": 166
2026-06-22T00:46:25.4926180Z             }
2026-06-22T00:46:25.4926284Z           ]
2026-06-22T00:46:25.4926384Z         }
2026-06-22T00:46:25.4926480Z       }
2026-06-22T00:46:25.4926575Z     },
2026-06-22T00:46:25.4926675Z     {
2026-06-22T00:46:25.4926824Z       "id": "REQ-HAZARD-CONFLICT-BOTH-PRESERVED",
2026-06-22T00:46:25.4927482Z       "title": "A surfaced concurrent context pair is durably preserved (both versions, tracked artifacts) until a strictly dominating write clears it; no reconcile failure path discards an unmerged version (6.6, ADR-0013)",
2026-06-22T00:46:25.4927604Z       "requiredStages": [
2026-06-22T00:46:25.4927708Z         "impl",
2026-06-22T00:46:25.4927813Z         "unit"
2026-06-22T00:46:25.4927916Z       ],
2026-06-22T00:46:25.4928011Z       "stages": {
2026-06-22T00:46:25.4928116Z         "doc": {
2026-06-22T00:46:25.4928236Z           "complete": false,
2026-06-22T00:46:25.4928340Z           "evidence": []
2026-06-22T00:46:25.4928441Z         },
2026-06-22T00:46:25.4928551Z         "impl": {
2026-06-22T00:46:25.4928655Z           "complete": true,
2026-06-22T00:46:25.4928765Z           "evidence": [
2026-06-22T00:46:25.4928870Z             {
2026-06-22T00:46:25.4929108Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-22T00:46:25.4929218Z               "line": 22
2026-06-22T00:46:25.4929318Z             },
2026-06-22T00:46:25.4929423Z             {
2026-06-22T00:46:25.4929556Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T00:46:25.4929662Z               "line": 487
2026-06-22T00:46:25.4929771Z             },
2026-06-22T00:46:25.4929871Z             {
2026-06-22T00:46:25.4930015Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-22T00:46:25.4930123Z               "line": 17
2026-06-22T00:46:25.4930228Z             },
2026-06-22T00:46:25.4930330Z             {
2026-06-22T00:46:25.4930466Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-22T00:46:25.4930580Z               "line": 147
2026-06-22T00:46:25.4930681Z             },
2026-06-22T00:46:25.4930786Z             {
2026-06-22T00:46:25.4930933Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T00:46:25.4931039Z               "line": 226
2026-06-22T00:46:25.4931143Z             },
2026-06-22T00:46:25.4931243Z             {
2026-06-22T00:46:25.4931396Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T00:46:25.4931500Z               "line": 251
2026-06-22T00:46:25.4931611Z             },
2026-06-22T00:46:25.4931710Z             {
2026-06-22T00:46:25.4931844Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T00:46:25.4931950Z               "line": 277
2026-06-22T00:46:25.4932044Z             },
2026-06-22T00:46:25.4932144Z             {
2026-06-22T00:46:25.4932274Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T00:46:25.4932488Z               "line": 124
2026-06-22T00:46:25.4932589Z             },
2026-06-22T00:46:25.4932778Z             {
2026-06-22T00:46:25.4932925Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T00:46:25.4933033Z               "line": 224
2026-06-22T00:46:25.4933146Z             }
2026-06-22T00:46:25.4933238Z           ]
2026-06-22T00:46:25.4933343Z         },
2026-06-22T00:46:25.4933452Z         "int": {
2026-06-22T00:46:25.4933563Z           "complete": false,
2026-06-22T00:46:25.4933676Z           "evidence": []
2026-06-22T00:46:25.4933776Z         },
2026-06-22T00:46:25.4933883Z         "unit": {
2026-06-22T00:46:25.4933991Z           "complete": true,
2026-06-22T00:46:25.4934096Z           "evidence": [
2026-06-22T00:46:25.4934197Z             {
2026-06-22T00:46:25.4934344Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-22T00:46:25.4934449Z               "line": 63
2026-06-22T00:46:25.4934540Z             },
2026-06-22T00:46:25.4934654Z             {
2026-06-22T00:46:25.4934798Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-22T00:46:25.4934906Z               "line": 73
2026-06-22T00:46:25.4935002Z             },
2026-06-22T00:46:25.4935089Z             {
2026-06-22T00:46:25.4935235Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-22T00:46:25.4935336Z               "line": 85
2026-06-22T00:46:25.4935442Z             },
2026-06-22T00:46:25.4935545Z             {
2026-06-22T00:46:25.4935696Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-22T00:46:25.4935802Z               "line": 346
2026-06-22T00:46:25.4935904Z             },
2026-06-22T00:46:25.4936004Z             {
2026-06-22T00:46:25.4936144Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-22T00:46:25.4936248Z               "line": 281
2026-06-22T00:46:25.4936348Z             },
2026-06-22T00:46:25.4936449Z             {
2026-06-22T00:46:25.4936591Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-22T00:46:25.4936711Z               "line": 322
2026-06-22T00:46:25.4936816Z             },
2026-06-22T00:46:25.4936925Z             {
2026-06-22T00:46:25.4937060Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-22T00:46:25.4937154Z               "line": 360
2026-06-22T00:46:25.4937259Z             },
2026-06-22T00:46:25.4937365Z             {
2026-06-22T00:46:25.4937511Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T00:46:25.4937611Z               "line": 688
2026-06-22T00:46:25.4937713Z             },
2026-06-22T00:46:25.4937816Z             {
2026-06-22T00:46:25.4937961Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T00:46:25.4938075Z               "line": 397
2026-06-22T00:46:25.4938183Z             },
2026-06-22T00:46:25.4938283Z             {
2026-06-22T00:46:25.4938429Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T00:46:25.4938533Z               "line": 440
2026-06-22T00:46:25.4938638Z             }
2026-06-22T00:46:25.4938749Z           ]
2026-06-22T00:46:25.4938848Z         }
2026-06-22T00:46:25.4939035Z       }
2026-06-22T00:46:25.4939139Z     },
2026-06-22T00:46:25.4939244Z     {
2026-06-22T00:46:25.4939368Z       "id": "REQ-HAZARD-CONPTY-DSR",
2026-06-22T00:46:25.4939607Z       "title": "ConPTY reader must auto-answer DSR (ESC[6n) or all child output stalls (5.5)",
2026-06-22T00:46:25.4939726Z       "requiredStages": [
2026-06-22T00:46:25.4939825Z         "impl",
2026-06-22T00:46:25.4939922Z         "unit"
2026-06-22T00:46:25.4940021Z       ],
2026-06-22T00:46:25.4940126Z       "stages": {
2026-06-22T00:46:25.4940232Z         "doc": {
2026-06-22T00:46:25.4940350Z           "complete": false,
2026-06-22T00:46:25.4940450Z           "evidence": []
2026-06-22T00:46:25.4940556Z         },
2026-06-22T00:46:25.4940669Z         "impl": {
2026-06-22T00:46:25.4940775Z           "complete": true,
2026-06-22T00:46:25.4940886Z           "evidence": [
2026-06-22T00:46:25.4940980Z             {
2026-06-22T00:46:25.4941217Z               "path": "crates/spt-term/src/reader.rs",
2026-06-22T00:46:25.4941337Z               "line": 169
2026-06-22T00:46:25.4941532Z             }
2026-06-22T00:46:25.4941627Z           ]
2026-06-22T00:46:25.4941726Z         },
2026-06-22T00:46:25.4941833Z         "int": {
2026-06-22T00:46:25.4941946Z           "complete": true,
2026-06-22T00:46:25.4942051Z           "evidence": [
2026-06-22T00:46:25.4942152Z             {
2026-06-22T00:46:25.4942289Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-22T00:46:25.4942394Z               "line": 44
2026-06-22T00:46:25.4942496Z             },
2026-06-22T00:46:25.4942600Z             {
2026-06-22T00:46:25.4942728Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-22T00:46:25.4942844Z               "line": 66
2026-06-22T00:46:25.4942947Z             }
2026-06-22T00:46:25.4943058Z           ]
2026-06-22T00:46:25.4943182Z         },
2026-06-22T00:46:25.4943285Z         "unit": {
2026-06-22T00:46:25.4943389Z           "complete": true,
2026-06-22T00:46:25.4943505Z           "evidence": [
2026-06-22T00:46:25.4943607Z             {
2026-06-22T00:46:25.4943741Z               "path": "crates/spt-term/src/reader.rs",
2026-06-22T00:46:25.4943856Z               "line": 186
2026-06-22T00:46:25.4943950Z             },
2026-06-22T00:46:25.4944050Z             {
2026-06-22T00:46:25.4944184Z               "path": "crates/spt-term/src/reader.rs",
2026-06-22T00:46:25.4944288Z               "line": 238
2026-06-22T00:46:25.4944390Z             },
2026-06-22T00:46:25.4944494Z             {
2026-06-22T00:46:25.4944627Z               "path": "crates/spt-term/src/reader.rs",
2026-06-22T00:46:25.4944743Z               "line": 266
2026-06-22T00:46:25.4944837Z             }
2026-06-22T00:46:25.4944942Z           ]
2026-06-22T00:46:25.4945038Z         }
2026-06-22T00:46:25.4945142Z       }
2026-06-22T00:46:25.4945252Z     },
2026-06-22T00:46:25.4945348Z     {
2026-06-22T00:46:25.4945495Z       "id": "REQ-HAZARD-CONTROLLER-GAP-RESUME",
2026-06-22T00:46:25.4952102Z       "title": "A serving CONTROLLER whose serve-brain hits a b4 drop-don't-block FORWARD output gap must RESUME-FROM-FLOOR (re-subscribe from delivered_through and re-fetch the dropped frames from the ring), NOT snap-above and NOT fatal. ROOT (v0.13.0 forkpty re-run, post-keystone): b4 made the controller a non-blocking try_send that DROPS frames when its bounded channel fills (a controller that falls behind its OWN echo under a hard flood), so the next read is a forward gap the strict reject-gap (brain.rs:624/628, B2 exactly-once) FATALS — wedged_viewer_does_not_stall_controller (attach.rs:1048) drove ctrl.read_event() raw and fataled on `output gap got 6134 want 4643`. Pre-b4 the inline sleep-poll BLOCKED the drain to the controller's rate (no drops, no gaps); this is a b4 SIDE-EFFECT, not a new class. A controller CANNOT snap (it is authoritative — advances delivered_through; skipping rolled frames = not-exactly-once = B2 violation), so REQ-HAZARD-VIEWER-RING-ROLL-SNAP does NOT apply. B2 INVARIANT (doyle, broker.rs:327-330): the ring trim is delivered_through-BLIND (`while ring.len() > cap_chunks { pop_front() }`), so re-fetch is exactly-once IFF tail - delivered_through <= cap_chunks (4096) — NOT guaranteed in general, but the common case (burst < ring; wedged_viewer ~1492 < 4096) holds. FIX: serve_attach catches the output-gap on the controller path (does not ?-propagate) and re-subscribes from Brain::controller_resume_floor (= delivered_through = the gap's `want`; NO mid-stream KIND_SESSIONS round-trip — sessions() loops on read_event and would re-fatal on the same gap + discard Output); the broker replays the dropped frames. The IRRECOVERABLE edge (floor unchanged across two resumes = ring rolled past delivered_through = frames gone) surfaces a MARKED truncation to the operator (never silent-skip = B2 lie, never spin) and ends cleanly — full graceful handling deferred to REQ-HAZARD-CONTROLLER-IRRECOVERABLE-BEHIND. Do NOT make the ring trim delivered_through-aware (that risks an unbounded ring under a stuck controller; the 5s eviction + 4096 ring is the practical bound). (v0.13.0)",
2026-06-22T00:46:25.4952393Z       "requiredStages": [
2026-06-22T00:46:25.4952592Z         "impl",
2026-06-22T00:46:25.4952692Z         "unit",
2026-06-22T00:46:25.4952793Z         "int"
2026-06-22T00:46:25.4952893Z       ],
2026-06-22T00:46:25.4952998Z       "stages": {
2026-06-22T00:46:25.4953108Z         "doc": {
2026-06-22T00:46:25.4953213Z           "complete": false,
2026-06-22T00:46:25.4953317Z           "evidence": []
2026-06-22T00:46:25.4953413Z         },
2026-06-22T00:46:25.4953521Z         "impl": {
2026-06-22T00:46:25.4953627Z           "complete": true,
2026-06-22T00:46:25.4953738Z           "evidence": [
2026-06-22T00:46:25.4953827Z             {
2026-06-22T00:46:25.4953974Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T00:46:25.4954074Z               "line": 109
2026-06-22T00:46:25.4954172Z             },
2026-06-22T00:46:25.4954276Z             {
2026-06-22T00:46:25.4954416Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T00:46:25.4954534Z               "line": 156
2026-06-22T00:46:25.4954644Z             },
2026-06-22T00:46:25.4954749Z             {
2026-06-22T00:46:25.4954892Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T00:46:25.4954998Z               "line": 261
2026-06-22T00:46:25.4955102Z             },
2026-06-22T00:46:25.4955206Z             {
2026-06-22T00:46:25.4955341Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T00:46:25.4955455Z               "line": 954
2026-06-22T00:46:25.4955555Z             }
2026-06-22T00:46:25.4955661Z           ]
2026-06-22T00:46:25.4955765Z         },
2026-06-22T00:46:25.4955870Z         "int": {
2026-06-22T00:46:25.4955980Z           "complete": true,
2026-06-22T00:46:25.4956084Z           "evidence": [
2026-06-22T00:46:25.4959066Z             {
2026-06-22T00:46:25.4959260Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T00:46:25.4959379Z               "line": 1051
2026-06-22T00:46:25.4959489Z             }
2026-06-22T00:46:25.4959591Z           ]
2026-06-22T00:46:25.4959696Z         },
2026-06-22T00:46:25.4959807Z         "unit": {
2026-06-22T00:46:25.4959925Z           "complete": true,
2026-06-22T00:46:25.4960035Z           "evidence": [
2026-06-22T00:46:25.4960136Z             {
2026-06-22T00:46:25.4960278Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T00:46:25.4960383Z               "line": 1498
2026-06-22T00:46:25.4960488Z             }
2026-06-22T00:46:25.4960588Z           ]
2026-06-22T00:46:25.4960694Z         }
2026-06-22T00:46:25.4960789Z       }
2026-06-22T00:46:25.4960889Z     },
2026-06-22T00:46:25.4960984Z     {
2026-06-22T00:46:25.4961146Z       "id": "REQ-HAZARD-CONTROLLER-IRRECOVERABLE-BEHIND",
2026-06-22T00:46:25.4964016Z       "title": "DEFERRED EDGE of REQ-HAZARD-CONTROLLER-GAP-RESUME: when a serving controller falls behind the live ring FURTHER than the ring holds (tail - delivered_through > cap_chunks, the ring trim being delivered_through-blind, broker.rs:327-330), the dropped frames have rolled OUT of the ring and an exactly-once re-fetch is IMPOSSIBLE. v0.13.0 DETECTS this (resume floor unchanged across two consecutive resumes) and surfaces a MARKED truncation notice to the operator then ends the attach cleanly — it never silent-skips (a B2 lie) and never spins. FULL graceful handling (a clearly-marked snap-with-data-loss that keeps the operator on the live tail, or a structured truncation record the rc renders distinctly, plus the controller-too-slow + ring-too-small backpressure/sizing policy) is DEFERRED — staging it needs a netsplit / deep-behind harness (the in-process loopback rig keeps up; wedged_viewer's gap is recoverable at ~1492 < 4096). (v0.13.0+)",
2026-06-22T00:46:25.4964144Z       "requiredStages": [],
2026-06-22T00:46:25.4964241Z       "stages": {
2026-06-22T00:46:25.4964358Z         "doc": {
2026-06-22T00:46:25.4964467Z           "complete": false,
2026-06-22T00:46:25.4964605Z           "evidence": []
2026-06-22T00:46:25.4964846Z         },
2026-06-22T00:46:25.4964933Z         "impl": {
2026-06-22T00:46:25.4965057Z           "complete": false,
2026-06-22T00:46:25.4965262Z           "evidence": []
2026-06-22T00:46:25.4965362Z         },
2026-06-22T00:46:25.4965461Z         "int": {
2026-06-22T00:46:25.4965567Z           "complete": false,
2026-06-22T00:46:25.4965681Z           "evidence": []
2026-06-22T00:46:25.4965781Z         },
2026-06-22T00:46:25.4965882Z         "unit": {
2026-06-22T00:46:25.4965991Z           "complete": false,
2026-06-22T00:46:25.4966101Z           "evidence": []
2026-06-22T00:46:25.4966201Z         }
2026-06-22T00:46:25.4966306Z       }
2026-06-22T00:46:25.4966401Z     },
2026-06-22T00:46:25.4966502Z     {
2026-06-22T00:46:25.4966644Z       "id": "REQ-HAZARD-CONTROLLER-RETAKE-FLOOR",
2026-06-22T00:46:25.4970886Z       "title": "`become_controller` should STRUCTURALLY refuse a controller re-take whose `from_seq` falls below the connection's already-delivered contiguous floor — making the P1c reorder invariant un-reintroducible by a future caller, not just removed at the one caller. ROOT/SCOPE (doyle proposed, P1c gate dialogue): P1c fixes REQ-HAZARD-CONTROLLER-WRITER-REORDER three ways (handoff single-take + epoch-gate-under-lock + session_cursors seed), removing the one decreasing-floor double-take and bounding any other to already-committed-only. A self-enforcing broker guard would refuse the bad SHAPE outright. BLOCKER: the obvious predicate (`from_seq >= delivered_through`) is UNSAFE because `delivered_through` is SESSION-WIDE (the `Arc<AtomicU64>` on `OutputLog`, shared by all controllers/viewers, advanced monotonic-MAX; `resume_seq` reads it) — a normal fresh-operator `from_seq=0` attach to a producing session legitimately sits below it (full ring replay + consumer dedup-below/snap-above), and monotonic-MAX can't distinguish the hazard (a `seq1`-without-`seq0` write reads as `2`). The structurally-correct guard needs a NEW per-connection contiguous-sent cursor (the true highest-contiguous seq this socket has received) that does not exist today; the guard then refuses a re-take below THAT. Bigger than P1c; no live gap (P1c fully fixes the actual bug). Mint/refine stages when the per-connection cursor is built. (v0.13.0 follow-up, post-ship)",
2026-06-22T00:46:25.4971077Z       "requiredStages": [],
2026-06-22T00:46:25.4971181Z       "stages": {
2026-06-22T00:46:25.4971273Z         "doc": {
2026-06-22T00:46:25.4971386Z           "complete": false,
2026-06-22T00:46:25.4971491Z           "evidence": []
2026-06-22T00:46:25.4971592Z         },
2026-06-22T00:46:25.4971701Z         "impl": {
2026-06-22T00:46:25.4971811Z           "complete": false,
2026-06-22T00:46:25.4971927Z           "evidence": []
2026-06-22T00:46:25.4972025Z         },
2026-06-22T00:46:25.4972125Z         "int": {
2026-06-22T00:46:25.4972236Z           "complete": false,
2026-06-22T00:46:25.4972340Z           "evidence": []
2026-06-22T00:46:25.4972445Z         },
2026-06-22T00:46:25.4972546Z         "unit": {
2026-06-22T00:46:25.4972660Z           "complete": false,
2026-06-22T00:46:25.4972759Z           "evidence": []
2026-06-22T00:46:25.4972868Z         }
2026-06-22T00:46:25.4972975Z       }
2026-06-22T00:46:25.4973073Z     },
2026-06-22T00:46:25.4973179Z     {
2026-06-22T00:46:25.4973327Z       "id": "REQ-HAZARD-CONTROLLER-WRITER-REORDER",
2026-06-22T00:46:25.4986940Z       "title": "Two `controller_writer` threads must never race ONE brain↔broker connection's socket. ROOT (doyle, instrumented RACEDIAG repro on kitsubito): on a brain-restart re-serve the handoff brain registers as controller on the SAME session TWICE over the SAME `Brain::conn` socket — (1) `Brain::handoff` eagerly `subscribe(prior.session_id, prior.next_seq=1)` → `become_controller(from_seq=1)`, initial=[1], spawns writer-A (writes seq 1); (2) `serve_attach` re-handles the replayed `Request{from_seq:0}` → `attach_as(sid,0)` → `become_controller(from_seq=0)`, initial=[0,1], spawns writer-B (writes 0 then 1). `become_controller` (broker.rs) drops the prior `ControllerSink` (its `tx`) but does NOT stop the prior writer thread — writer-A keeps flushing its owned `initial` batch, and both writers hold clones of the same `SharedSend` (`Arc<Mutex<socket>>`) with NO inter-thread ordering. When writer-A's seq 1 wins the socket before writer-B's seq 0, the strict legacy consumer (brain.rs read_event reject-gap path) sees `output gap: got seq 1 want 0` → the test `attach_survives_target_brain_restart_exactly_once` panics at `.expect(\"re-serve\")` OR HANGS in `render_until` (serve thread died on the gap → MARKER_TWO never reaches the wire). `prior.next_seq` is life1's CONSUMPTION cursor, NOT life2's connection state — life2's socket has been sent NOTHING, so a `from_seq=0` full replay on a connection that already streamed seq 1 is contradictory. Snap-above tolerance ALONE can't fix it (it would dedup-drop the late seq 0 → byte loss → the exactly-once byte-identity assert fails). PRE-EXISTING, surfaced by the v0.13.0 green-both-runners release gate; P1b is INNOCENT (its diff touches only input-ack machinery, proven mechanically + the test passes post-P1b in isolation). Sibling flaky cluster: `inject_control_wedge::g2`, `broker::spawn_env_reaches_child`. INVARIANT: on a single brain↔broker connection the controller output-frame stream is monotonic non-decreasing in seq (modulo dedup re-sends); exactly ONE `controller_writer` is ever live per connection; a SUPERSEDED writer writes NO further frames; a re-serve never replays a seq below what the connection already received. FIX (doyle design, corrected at the gate 2026-06-20): fix #1 as designed ('drop handoff's eager subscribe so serve_attach's attach_as is the sole registration') was REVERTED — handoff's `subscribe(prior.next_seq)` IS the standalone-resume mechanism (the brain-only update engine `apply_brain_only` + the `handoff`/`idempotent`/`daemon_e2e` int tests replay output through it with NO `serve_attach`; dropping it hung every resume-via-handoff test). The shipped fix is three parts: (1) CORRECTNESS — `Brain::handoff` seeds `session_cursors` at `prior.next_seq` so the consumer runs the production dedup-below+snap-above path, never the strict reject-gap legacy trap; this is COMPLETE (not merely tolerant) because every `controller_writer` emits an ASCENDING seq stream and the surviving writer (serve_attach's attach_as(sid,0)) offers the complete `[0,end]` range, so a snap-above merge of ascending writers delivers `[K,end]` with no skip/dup (first sighting of any seq>M is preceded by M on that writer). (2) INVARIANT — `controller_writer`'s INITIAL-BATCH replay is epoch-gated: `controller_epoch` is a shared `Arc<AtomicU64>`, the writer re-reads it UNDER `send.lock()` (atomically with `write_frame`) and returns the instant it is superseded — no check-then-block-then-write window, no superseded replay (W1-safe: never blocks the drain under `Mutex<OutputLog>`). The LIVE loop is NOT gated (new output only flows to the current controller; a superseded writer must still deliver its terminal `Displaced` kick — gating it suppressed the loud-take notice; it ends on `tx`-drop). (3) EXPLICIT-RESUME / OPERATOR-STREAM BOUNDARY (the LOAD-BEARING fix — kitsubito RACEDIAG ~33% repro the keystones missed) — `Brain::subscribe_with` (shared by attach/attach_as) resets the resume-mode dedup cursor to `from_seq`. The handoff eager subscribe makes serve_attach's brain receive the replay's seq K BEFORE the operator Request is processed (`attached`=false); that frame is dropped by the if-attached forward gate but the snap-above cursor already advanced past K, and `attach_as(sid,0)`'s re-subscribe used to leave the cursor advanced → the broker's re-send of seq K arrives below it, deduped, never forwarded → operator viewport forward-gap (silent content loss in the real rc consumer). Resetting to from_seq on the attach_as re-subscribe re-delivers from 0 (operator dedups the overlap) so seq K reaches the viewport. The epoch gate (2) is sound (RACEDIAG: zero socket interleaving above K); cold-start brains (empty map — production dispatch serve) keep the legacy next_seq path, so production is unaffected. (v0.13.0)",
2026-06-22T00:46:25.4987488Z       "requiredStages": [
2026-06-22T00:46:25.4987660Z         "doc",
2026-06-22T00:46:25.4987769Z         "impl",
2026-06-22T00:46:25.4987875Z         "unit",
2026-06-22T00:46:25.4987980Z         "int"
2026-06-22T00:46:25.4988079Z       ],
2026-06-22T00:46:25.4988180Z       "stages": {
2026-06-22T00:46:25.4988276Z         "doc": {
2026-06-22T00:46:25.4988384Z           "complete": true,
2026-06-22T00:46:25.4988493Z           "evidence": [
2026-06-22T00:46:25.4988598Z             {
2026-06-22T00:46:25.4988729Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T00:46:25.4988839Z               "line": 468
2026-06-22T00:46:25.4989025Z             }
2026-06-22T00:46:25.4989119Z           ]
2026-06-22T00:46:25.4989221Z         },
2026-06-22T00:46:25.4989331Z         "impl": {
2026-06-22T00:46:25.4989439Z           "complete": true,
2026-06-22T00:46:25.4989545Z           "evidence": [
2026-06-22T00:46:25.4989650Z             {
2026-06-22T00:46:25.4989797Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T00:46:25.4989903Z               "line": 348
2026-06-22T00:46:25.4990021Z             },
2026-06-22T00:46:25.4990126Z             {
2026-06-22T00:46:25.4990265Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T00:46:25.4990374Z               "line": 1282
2026-06-22T00:46:25.4990476Z             },
2026-06-22T00:46:25.4990580Z             {
2026-06-22T00:46:25.4990727Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.4990833Z               "line": 847
2026-06-22T00:46:25.4990937Z             }
2026-06-22T00:46:25.4991031Z           ]
2026-06-22T00:46:25.4991127Z         },
2026-06-22T00:46:25.4991230Z         "int": {
2026-06-22T00:46:25.4991333Z           "complete": true,
2026-06-22T00:46:25.4991439Z           "evidence": [
2026-06-22T00:46:25.4991540Z             {
2026-06-22T00:46:25.4991691Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T00:46:25.4991807Z               "line": 1206
2026-06-22T00:46:25.4991907Z             },
2026-06-22T00:46:25.4992006Z             {
2026-06-22T00:46:25.4992160Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T00:46:25.4992273Z               "line": 1307
2026-06-22T00:46:25.4992364Z             },
2026-06-22T00:46:25.4992465Z             {
2026-06-22T00:46:25.4992602Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T00:46:25.4992713Z               "line": 1169
2026-06-22T00:46:25.4992813Z             }
2026-06-22T00:46:25.4992917Z           ]
2026-06-22T00:46:25.4993023Z         },
2026-06-22T00:46:25.4993132Z         "unit": {
2026-06-22T00:46:25.4993236Z           "complete": true,
2026-06-22T00:46:25.4993343Z           "evidence": [
2026-06-22T00:46:25.4993447Z             {
2026-06-22T00:46:25.4993580Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.4993695Z               "line": 3114
2026-06-22T00:46:25.4993804Z             }
2026-06-22T00:46:25.4993903Z           ]
2026-06-22T00:46:25.4994003Z         }
2026-06-22T00:46:25.4994105Z       }
2026-06-22T00:46:25.4994217Z     },
2026-06-22T00:46:25.4994318Z     {
2026-06-22T00:46:25.4994471Z       "id": "REQ-HAZARD-DAEMON-HOSTED-LIVENESS",
2026-06-22T00:46:25.4994919Z       "title": "Daemon-hosted perches (Psyche, spt-hosted Self) derive liveness from the daemon endpoint table + info.json status, never is_process_alive(info.pid) (2.5)",
2026-06-22T00:46:25.4995029Z       "requiredStages": [
2026-06-22T00:46:25.4995133Z         "impl",
2026-06-22T00:46:25.4995228Z         "unit",
2026-06-22T00:46:25.4995330Z         "int"
2026-06-22T00:46:25.4995429Z       ],
2026-06-22T00:46:25.4995538Z       "stages": {
2026-06-22T00:46:25.4995640Z         "doc": {
2026-06-22T00:46:25.4995753Z           "complete": false,
2026-06-22T00:46:25.4995867Z           "evidence": []
2026-06-22T00:46:25.4995969Z         },
2026-06-22T00:46:25.4996077Z         "impl": {
2026-06-22T00:46:25.4996200Z           "complete": true,
2026-06-22T00:46:25.4996422Z           "evidence": [
2026-06-22T00:46:25.4996527Z             {
2026-06-22T00:46:25.4996784Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T00:46:25.4996899Z               "line": 178
2026-06-22T00:46:25.4997004Z             },
2026-06-22T00:46:25.4997113Z             {
2026-06-22T00:46:25.4997252Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T00:46:25.4997366Z               "line": 226
2026-06-22T00:46:25.4997466Z             },
2026-06-22T00:46:25.4997563Z             {
2026-06-22T00:46:25.4997705Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T00:46:25.4997815Z               "line": 79
2026-06-22T00:46:25.4997919Z             },
2026-06-22T00:46:25.4998024Z             {
2026-06-22T00:46:25.4998149Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T00:46:25.4998258Z               "line": 52
2026-06-22T00:46:25.4998363Z             },
2026-06-22T00:46:25.4998474Z             {
2026-06-22T00:46:25.4998625Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T00:46:25.4998730Z               "line": 263
2026-06-22T00:46:25.4998836Z             },
2026-06-22T00:46:25.4998934Z             {
2026-06-22T00:46:25.4999154Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T00:46:25.4999261Z               "line": 27
2026-06-22T00:46:25.4999365Z             },
2026-06-22T00:46:25.4999466Z             {
2026-06-22T00:46:25.4999614Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T00:46:25.4999728Z               "line": 79
2026-06-22T00:46:25.4999829Z             },
2026-06-22T00:46:25.4999933Z             {
2026-06-22T00:46:25.5000067Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T00:46:25.5000172Z               "line": 102
2026-06-22T00:46:25.5000276Z             },
2026-06-22T00:46:25.5000376Z             {
2026-06-22T00:46:25.5000520Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T00:46:25.5000624Z               "line": 116
2026-06-22T00:46:25.5000740Z             }
2026-06-22T00:46:25.5000844Z           ]
2026-06-22T00:46:25.5000948Z         },
2026-06-22T00:46:25.5001050Z         "int": {
2026-06-22T00:46:25.5001163Z           "complete": true,
2026-06-22T00:46:25.5001282Z           "evidence": [
2026-06-22T00:46:25.5001384Z             {
2026-06-22T00:46:25.5001530Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-22T00:46:25.5001634Z               "line": 43
2026-06-22T00:46:25.5001729Z             }
2026-06-22T00:46:25.5001823Z           ]
2026-06-22T00:46:25.5001917Z         },
2026-06-22T00:46:25.5002032Z         "unit": {
2026-06-22T00:46:25.5002143Z           "complete": true,
2026-06-22T00:46:25.5002251Z           "evidence": [
2026-06-22T00:46:25.5002343Z             {
2026-06-22T00:46:25.5002495Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T00:46:25.5002600Z               "line": 678
2026-06-22T00:46:25.5002710Z             },
2026-06-22T00:46:25.5002819Z             {
2026-06-22T00:46:25.5002949Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T00:46:25.5003072Z               "line": 495
2026-06-22T00:46:25.5003167Z             },
2026-06-22T00:46:25.5003268Z             {
2026-06-22T00:46:25.5003410Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T00:46:25.5003515Z               "line": 124
2026-06-22T00:46:25.5003631Z             },
2026-06-22T00:46:25.5003734Z             {
2026-06-22T00:46:25.5003878Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T00:46:25.5003979Z               "line": 143
2026-06-22T00:46:25.5004087Z             },
2026-06-22T00:46:25.5004188Z             {
2026-06-22T00:46:25.5004336Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T00:46:25.5004439Z               "line": 160
2026-06-22T00:46:25.5004525Z             },
2026-06-22T00:46:25.5004626Z             {
2026-06-22T00:46:25.5004763Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T00:46:25.5004978Z               "line": 187
2026-06-22T00:46:25.5005078Z             },
2026-06-22T00:46:25.5005184Z             {
2026-06-22T00:46:25.5005426Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T00:46:25.5005537Z               "line": 206
2026-06-22T00:46:25.5005641Z             },
2026-06-22T00:46:25.5005740Z             {
2026-06-22T00:46:25.5005876Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T00:46:25.5005984Z               "line": 229
2026-06-22T00:46:25.5006084Z             }
2026-06-22T00:46:25.5006190Z           ]
2026-06-22T00:46:25.5006293Z         }
2026-06-22T00:46:25.5006399Z       }
2026-06-22T00:46:25.5006501Z     },
2026-06-22T00:46:25.5006604Z     {
2026-06-22T00:46:25.5006750Z       "id": "REQ-HAZARD-DAEMON-SCHED-NONBLOCKING",
2026-06-22T00:46:25.5007416Z       "title": "Per-agent pulse/psyche/echo-commune scheduling must not serialize across agents: each agent's bounded LLM call (echo-commune summarizer, Psyche turn) runs off the shared scheduler so one slow/hung call cannot stall another agent's tick (7.4)",
2026-06-22T00:46:25.5007540Z       "requiredStages": [
2026-06-22T00:46:25.5007654Z         "impl",
2026-06-22T00:46:25.5007760Z         "unit"
2026-06-22T00:46:25.5007865Z       ],
2026-06-22T00:46:25.5007978Z       "stages": {
2026-06-22T00:46:25.5008089Z         "doc": {
2026-06-22T00:46:25.5008194Z           "complete": false,
2026-06-22T00:46:25.5008307Z           "evidence": []
2026-06-22T00:46:25.5008409Z         },
2026-06-22T00:46:25.5008522Z         "impl": {
2026-06-22T00:46:25.5008627Z           "complete": true,
2026-06-22T00:46:25.5008738Z           "evidence": [
2026-06-22T00:46:25.5008842Z             {
2026-06-22T00:46:25.5009068Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.5009180Z               "line": 1323
2026-06-22T00:46:25.5009281Z             },
2026-06-22T00:46:25.5009387Z             {
2026-06-22T00:46:25.5009523Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.5009642Z               "line": 1579
2026-06-22T00:46:25.5009751Z             }
2026-06-22T00:46:25.5009859Z           ]
2026-06-22T00:46:25.5009964Z         },
2026-06-22T00:46:25.5010074Z         "int": {
2026-06-22T00:46:25.5010192Z           "complete": false,
2026-06-22T00:46:25.5010288Z           "evidence": []
2026-06-22T00:46:25.5010398Z         },
2026-06-22T00:46:25.5010502Z         "unit": {
2026-06-22T00:46:25.5010608Z           "complete": true,
2026-06-22T00:46:25.5010713Z           "evidence": [
2026-06-22T00:46:25.5010817Z             {
2026-06-22T00:46:25.5010971Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-22T00:46:25.5011075Z               "line": 161
2026-06-22T00:46:25.5011180Z             }
2026-06-22T00:46:25.5011286Z           ]
2026-06-22T00:46:25.5011385Z         }
2026-06-22T00:46:25.5011485Z       }
2026-06-22T00:46:25.5011586Z     },
2026-06-22T00:46:25.5011690Z     {
2026-06-22T00:46:25.5011824Z       "id": "REQ-HAZARD-DAEMON-STOP-BARRIER",
2026-06-22T00:46:25.5013556Z       "title": "B3: `spt daemon stop` then an immediate `spt daemon start` does NOT race — stop fully completes before it returns. Today request_stop (seedmap.rs:240-255) returns on the KIND_STOPPING ack (sent seedmap.rs:174-176) BEFORE the seed socket unbinds, so a following is_running ping (daemon.rs:375) wins the exit window and start reports ALREADY_RUNNING (operator: daemon stop → STOPPED then start → ALREADY_RUNNING). FIX: unbind/stop-gate the seed socket BEFORE acking KIND_STOPPING, OR request_stop waits for a ping-to-fail before returning. Unit: stop then immediate is_running()==false. (v0.12.0)",
2026-06-22T00:46:25.5013694Z       "requiredStages": [
2026-06-22T00:46:25.5013799Z         "impl",
2026-06-22T00:46:25.5013900Z         "unit"
2026-06-22T00:46:25.5014004Z       ],
2026-06-22T00:46:25.5014114Z       "stages": {
2026-06-22T00:46:25.5014219Z         "doc": {
2026-06-22T00:46:25.5014328Z           "complete": false,
2026-06-22T00:46:25.5014438Z           "evidence": []
2026-06-22T00:46:25.5014686Z         },
2026-06-22T00:46:25.5014797Z         "impl": {
2026-06-22T00:46:25.5015009Z           "complete": true,
2026-06-22T00:46:25.5015119Z           "evidence": [
2026-06-22T00:46:25.5015230Z             {
2026-06-22T00:46:25.5015376Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T00:46:25.5015487Z               "line": 257
2026-06-22T00:46:25.5015587Z             }
2026-06-22T00:46:25.5015686Z           ]
2026-06-22T00:46:25.5015787Z         },
2026-06-22T00:46:25.5015892Z         "int": {
2026-06-22T00:46:25.5016005Z           "complete": false,
2026-06-22T00:46:25.5016111Z           "evidence": []
2026-06-22T00:46:25.5016220Z         },
2026-06-22T00:46:25.5016325Z         "unit": {
2026-06-22T00:46:25.5016436Z           "complete": true,
2026-06-22T00:46:25.5016549Z           "evidence": [
2026-06-22T00:46:25.5016649Z             {
2026-06-22T00:46:25.5016798Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T00:46:25.5016912Z               "line": 360
2026-06-22T00:46:25.5017022Z             }
2026-06-22T00:46:25.5017127Z           ]
2026-06-22T00:46:25.5017235Z         }
2026-06-22T00:46:25.5017345Z       }
2026-06-22T00:46:25.5017440Z     },
2026-06-22T00:46:25.5017547Z     {
2026-06-22T00:46:25.5017681Z       "id": "REQ-HAZARD-DAEMON-STOP-REAP",
2026-06-22T00:46:25.5019555Z       "title": "Breap: `spt daemon stop` REAPS the spt-hosted children it spawned — no orphaned psyche/harness processes. Today a stop leaves ~8 orphaned claude-spt-psyche.exe + spt.exe: Psyches are spawned DETACHED (runtime.rs:342-356, the Child is dropped — 'Detached' ~349) and the livehost stop flag Arc<AtomicBool> is NEVER raised (brainproc.rs:227-230 holds it 'for symmetry'). FIX: on stop, raise the livehost stop flag AND kill the spawned psyche/spt-hosted children — via a Windows job object / Unix process-group so the children die with the daemon (not detached-immortal). Folds with B3 (both the stop path). (v0.12.0)",
2026-06-22T00:46:25.5019689Z       "requiredStages": [
2026-06-22T00:46:25.5019793Z         "impl",
2026-06-22T00:46:25.5019894Z         "unit"
2026-06-22T00:46:25.5020003Z       ],
2026-06-22T00:46:25.5020107Z       "stages": {
2026-06-22T00:46:25.5020212Z         "doc": {
2026-06-22T00:46:25.5020316Z           "complete": false,
2026-06-22T00:46:25.5020424Z           "evidence": []
2026-06-22T00:46:25.5020519Z         },
2026-06-22T00:46:25.5020625Z         "impl": {
2026-06-22T00:46:25.5020734Z           "complete": true,
2026-06-22T00:46:25.5020838Z           "evidence": [
2026-06-22T00:46:25.5020944Z             {
2026-06-22T00:46:25.5021110Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.5021216Z               "line": 1018
2026-06-22T00:46:25.5021326Z             },
2026-06-22T00:46:25.5021430Z             {
2026-06-22T00:46:25.5021578Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.5021687Z               "line": 283
2026-06-22T00:46:25.5021782Z             },
2026-06-22T00:46:25.5021889Z             {
2026-06-22T00:46:25.5022030Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.5022151Z               "line": 316
2026-06-22T00:46:25.5022246Z             },
2026-06-22T00:46:25.5022345Z             {
2026-06-22T00:46:25.5022490Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-22T00:46:25.5022598Z               "line": 26
2026-06-22T00:46:25.5022706Z             }
2026-06-22T00:46:25.5022807Z           ]
2026-06-22T00:46:25.5022910Z         },
2026-06-22T00:46:25.5023014Z         "int": {
2026-06-22T00:46:25.5023124Z           "complete": false,
2026-06-22T00:46:25.5023225Z           "evidence": []
2026-06-22T00:46:25.5023324Z         },
2026-06-22T00:46:25.5023424Z         "unit": {
2026-06-22T00:46:25.5023530Z           "complete": true,
2026-06-22T00:46:25.5023639Z           "evidence": [
2026-06-22T00:46:25.5023739Z             {
2026-06-22T00:46:25.5023868Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-22T00:46:25.5024093Z               "line": 271
2026-06-22T00:46:25.5024197Z             },
2026-06-22T00:46:25.5024306Z             {
2026-06-22T00:46:25.5024521Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-22T00:46:25.5024635Z               "line": 348
2026-06-22T00:46:25.5024723Z             }
2026-06-22T00:46:25.5024826Z           ]
2026-06-22T00:46:25.5024926Z         }
2026-06-22T00:46:25.5025023Z       }
2026-06-22T00:46:25.5025132Z     },
2026-06-22T00:46:25.5025232Z     {
2026-06-22T00:46:25.5025357Z       "id": "REQ-HAZARD-DEFERRED-DRAIN",
2026-06-22T00:46:25.5025555Z       "title": "Deferred spool rows excluded from the event-stream drain (1.4)",
2026-06-22T00:46:25.5025669Z       "requiredStages": [
2026-06-22T00:46:25.5025775Z         "impl",
2026-06-22T00:46:25.5025884Z         "unit"
2026-06-22T00:46:25.5025984Z       ],
2026-06-22T00:46:25.5026090Z       "stages": {
2026-06-22T00:46:25.5026198Z         "doc": {
2026-06-22T00:46:25.5026314Z           "complete": false,
2026-06-22T00:46:25.5026423Z           "evidence": []
2026-06-22T00:46:25.5026527Z         },
2026-06-22T00:46:25.5026633Z         "impl": {
2026-06-22T00:46:25.5026743Z           "complete": true,
2026-06-22T00:46:25.5026852Z           "evidence": [
2026-06-22T00:46:25.5026963Z             {
2026-06-22T00:46:25.5027157Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T00:46:25.5027268Z               "line": 40
2026-06-22T00:46:25.5027368Z             },
2026-06-22T00:46:25.5027472Z             {
2026-06-22T00:46:25.5027616Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T00:46:25.5027724Z               "line": 103
2026-06-22T00:46:25.5027828Z             },
2026-06-22T00:46:25.5027928Z             {
2026-06-22T00:46:25.5028065Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T00:46:25.5028174Z               "line": 218
2026-06-22T00:46:25.5028265Z             },
2026-06-22T00:46:25.5028371Z             {
2026-06-22T00:46:25.5028503Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T00:46:25.5028628Z               "line": 323
2026-06-22T00:46:25.5028732Z             }
2026-06-22T00:46:25.5028846Z           ]
2026-06-22T00:46:25.5029019Z         },
2026-06-22T00:46:25.5029118Z         "int": {
2026-06-22T00:46:25.5029229Z           "complete": false,
2026-06-22T00:46:25.5029338Z           "evidence": []
2026-06-22T00:46:25.5029452Z         },
2026-06-22T00:46:25.5029553Z         "unit": {
2026-06-22T00:46:25.5029667Z           "complete": true,
2026-06-22T00:46:25.5029781Z           "evidence": [
2026-06-22T00:46:25.5029887Z             {
2026-06-22T00:46:25.5030029Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T00:46:25.5030130Z               "line": 361
2026-06-22T00:46:25.5030240Z             },
2026-06-22T00:46:25.5030339Z             {
2026-06-22T00:46:25.5030474Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T00:46:25.5030587Z               "line": 433
2026-06-22T00:46:25.5030686Z             },
2026-06-22T00:46:25.5030791Z             {
2026-06-22T00:46:25.5030928Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T00:46:25.5031036Z               "line": 496
2026-06-22T00:46:25.5031132Z             },
2026-06-22T00:46:25.5031233Z             {
2026-06-22T00:46:25.5031379Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T00:46:25.5031486Z               "line": 517
2026-06-22T00:46:25.5031590Z             }
2026-06-22T00:46:25.5031689Z           ]
2026-06-22T00:46:25.5031791Z         }
2026-06-22T00:46:25.5031891Z       }
2026-06-22T00:46:25.5031994Z     },
2026-06-22T00:46:25.5032101Z     {
2026-06-22T00:46:25.5032234Z       "id": "REQ-HAZARD-DEFERRED-MANIFEST",
2026-06-22T00:46:25.5034528Z       "title": "A pointer-mode (delegated / GhReleaseManaged) adapter whose binary/manifest is not yet extracted is reported with a CLEAR diagnostic, never silently dropped. Today such an adapter reads its manifest LIVE from source_dir (registry.rs manifest_dir ~146/149); a deferred / un-extracted install makes load_manifest fail → registered() (~410, filter_map(.ok())) SILENTLY DROPS the row → downstream ADAPTER_UNRESOLVED + a cryptic os-error-2 on `spt adapter use`. FIX: surface a clear diagnostic at the resolver + at `adapter use` (name the adapter + the deferred/missing-manifest cause + the fix), not a silent filter-drop and not a bare os-error-2; consider an eager manifest copy at register time so host_binaries survive before the binary download completes. doyle Finding A. (post-v0.10.0)",
2026-06-22T00:46:25.5034890Z       "requiredStages": [
2026-06-22T00:46:25.5034997Z         "impl",
2026-06-22T00:46:25.5035096Z         "unit"
2026-06-22T00:46:25.5035191Z       ],
2026-06-22T00:46:25.5035302Z       "stages": {
2026-06-22T00:46:25.5035401Z         "doc": {
2026-06-22T00:46:25.5035506Z           "complete": false,
2026-06-22T00:46:25.5035617Z           "evidence": []
2026-06-22T00:46:25.5035720Z         },
2026-06-22T00:46:25.5035825Z         "impl": {
2026-06-22T00:46:25.5035936Z           "complete": true,
2026-06-22T00:46:25.5036058Z           "evidence": [
2026-06-22T00:46:25.5036167Z             {
2026-06-22T00:46:25.5036321Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T00:46:25.5036430Z               "line": 402
2026-06-22T00:46:25.5036534Z             },
2026-06-22T00:46:25.5036636Z             {
2026-06-22T00:46:25.5036782Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T00:46:25.5036898Z               "line": 446
2026-06-22T00:46:25.5037007Z             }
2026-06-22T00:46:25.5037106Z           ]
2026-06-22T00:46:25.5037208Z         },
2026-06-22T00:46:25.5037312Z         "int": {
2026-06-22T00:46:25.5037426Z           "complete": false,
2026-06-22T00:46:25.5037532Z           "evidence": []
2026-06-22T00:46:25.5037641Z         },
2026-06-22T00:46:25.5037750Z         "unit": {
2026-06-22T00:46:25.5037861Z           "complete": true,
2026-06-22T00:46:25.5037965Z           "evidence": [
2026-06-22T00:46:25.5038065Z             {
2026-06-22T00:46:25.5038219Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T00:46:25.5038318Z               "line": 910
2026-06-22T00:46:25.5038431Z             }
2026-06-22T00:46:25.5038531Z           ]
2026-06-22T00:46:25.5038630Z         }
2026-06-22T00:46:25.5038734Z       }
2026-06-22T00:46:25.5038820Z     },
2026-06-22T00:46:25.5038926Z     {
2026-06-22T00:46:25.5039149Z       "id": "REQ-HAZARD-DEFERRED-SURVIVE-DRAIN",
2026-06-22T00:46:25.5039306Z       "title": "Deferred rows survive poll drain (4.4)",
2026-06-22T00:46:25.5039426Z       "requiredStages": [
2026-06-22T00:46:25.5039531Z         "impl",
2026-06-22T00:46:25.5039640Z         "unit"
2026-06-22T00:46:25.5039741Z       ],
2026-06-22T00:46:25.5039855Z       "stages": {
2026-06-22T00:46:25.5039959Z         "doc": {
2026-06-22T00:46:25.5040080Z           "complete": false,
2026-06-22T00:46:25.5040189Z           "evidence": []
2026-06-22T00:46:25.5040288Z         },
2026-06-22T00:46:25.5040399Z         "impl": {
2026-06-22T00:46:25.5040508Z           "complete": true,
2026-06-22T00:46:25.5040631Z           "evidence": [
2026-06-22T00:46:25.5040738Z             {
2026-06-22T00:46:25.5040894Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T00:46:25.5041010Z               "line": 116
2026-06-22T00:46:25.5041110Z             },
2026-06-22T00:46:25.5041212Z             {
2026-06-22T00:46:25.5041356Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T00:46:25.5041469Z               "line": 211
2026-06-22T00:46:25.5041563Z             }
2026-06-22T00:46:25.5041668Z           ]
2026-06-22T00:46:25.5041769Z         },
2026-06-22T00:46:25.5041868Z         "int": {
2026-06-22T00:46:25.5041988Z           "complete": false,
2026-06-22T00:46:25.5042097Z           "evidence": []
2026-06-22T00:46:25.5042201Z         },
2026-06-22T00:46:25.5042308Z         "unit": {
2026-06-22T00:46:25.5042421Z           "complete": true,
2026-06-22T00:46:25.5042535Z           "evidence": [
2026-06-22T00:46:25.5042637Z             {
2026-06-22T00:46:25.5042874Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T00:46:25.5042985Z               "line": 388
2026-06-22T00:46:25.5043174Z             },
2026-06-22T00:46:25.5043276Z             {
2026-06-22T00:46:25.5043417Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T00:46:25.5043533Z               "line": 469
2026-06-22T00:46:25.5043634Z             }
2026-06-22T00:46:25.5043741Z           ]
2026-06-22T00:46:25.5043841Z         }
2026-06-22T00:46:25.5043946Z       }
2026-06-22T00:46:25.5044045Z     },
2026-06-22T00:46:25.5044149Z     {
2026-06-22T00:46:25.5044297Z       "id": "REQ-HAZARD-DETACHED-PIPE-INHERIT",
2026-06-22T00:46:25.5045402Z       "title": "Windows detached long-lived children must not inherit a captured caller's pipe: every detach-spawn of an immortal child (daemon, shell binary) runs bInheritHandles=FALSE, or a caller capturing output anywhere up the process chain hangs forever on a pipe that never EOFs — std-handle flag stripping is NOT sufficient (grandparent strays still flow) (5.6)",
2026-06-22T00:46:25.5045538Z       "requiredStages": [
2026-06-22T00:46:25.5045641Z         "impl",
2026-06-22T00:46:25.5045751Z         "unit"
2026-06-22T00:46:25.5045857Z       ],
2026-06-22T00:46:25.5045956Z       "stages": {
2026-06-22T00:46:25.5046066Z         "doc": {
2026-06-22T00:46:25.5046177Z           "complete": true,
2026-06-22T00:46:25.5046289Z           "evidence": [
2026-06-22T00:46:25.5046385Z             {
2026-06-22T00:46:25.5046525Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T00:46:25.5046632Z               "line": 206
2026-06-22T00:46:25.5046727Z             }
2026-06-22T00:46:25.5046833Z           ]
2026-06-22T00:46:25.5046933Z         },
2026-06-22T00:46:25.5047037Z         "impl": {
2026-06-22T00:46:25.5047143Z           "complete": true,
2026-06-22T00:46:25.5047262Z           "evidence": [
2026-06-22T00:46:25.5047361Z             {
2026-06-22T00:46:25.5047496Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.5047614Z               "line": 691
2026-06-22T00:46:25.5047715Z             },
2026-06-22T00:46:25.5047824Z             {
2026-06-22T00:46:25.5047967Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.5048083Z               "line": 791
2026-06-22T00:46:25.5048182Z             },
2026-06-22T00:46:25.5048282Z             {
2026-06-22T00:46:25.5048417Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.5048530Z               "line": 1120
2026-06-22T00:46:25.5048635Z             },
2026-06-22T00:46:25.5048737Z             {
2026-06-22T00:46:25.5048887Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T00:46:25.5049077Z               "line": 184
2026-06-22T00:46:25.5049176Z             }
2026-06-22T00:46:25.5049275Z           ]
2026-06-22T00:46:25.5049366Z         },
2026-06-22T00:46:25.5049477Z         "int": {
2026-06-22T00:46:25.5049584Z           "complete": false,
2026-06-22T00:46:25.5049695Z           "evidence": []
2026-06-22T00:46:25.5049795Z         },
2026-06-22T00:46:25.5049899Z         "unit": {
2026-06-22T00:46:25.5050020Z           "complete": true,
2026-06-22T00:46:25.5050124Z           "evidence": [
2026-06-22T00:46:25.5050233Z             {
2026-06-22T00:46:25.5050363Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.5050482Z               "line": 1169
2026-06-22T00:46:25.5050582Z             },
2026-06-22T00:46:25.5050678Z             {
2026-06-22T00:46:25.5050839Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-22T00:46:25.5050950Z               "line": 44
2026-06-22T00:46:25.5051054Z             },
2026-06-22T00:46:25.5051159Z             {
2026-06-22T00:46:25.5051317Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-22T00:46:25.5051430Z               "line": 52
2026-06-22T00:46:25.5051531Z             },
2026-06-22T00:46:25.5051641Z             {
2026-06-22T00:46:25.5051777Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-22T00:46:25.5052001Z               "line": 57
2026-06-22T00:46:25.5052104Z             },
2026-06-22T00:46:25.5052204Z             {
2026-06-22T00:46:25.5052447Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-22T00:46:25.5052558Z               "line": 54
2026-06-22T00:46:25.5052662Z             }
2026-06-22T00:46:25.5052771Z           ]
2026-06-22T00:46:25.5052877Z         }
2026-06-22T00:46:25.5052982Z       }
2026-06-22T00:46:25.5053086Z     },
2026-06-22T00:46:25.5053192Z     {
2026-06-22T00:46:25.5053339Z       "id": "REQ-HAZARD-DIRECT-WRITE-PRECEDENCE",
2026-06-22T00:46:25.5053574Z       "title": "Direct-write precedence marker (with node id) guards stale overwrite (6.5)",
2026-06-22T00:46:25.5053692Z       "requiredStages": [
2026-06-22T00:46:25.5053792Z         "impl",
2026-06-22T00:46:25.5053898Z         "unit"
2026-06-22T00:46:25.5054016Z       ],
2026-06-22T00:46:25.5054122Z       "stages": {
2026-06-22T00:46:25.5054227Z         "doc": {
2026-06-22T00:46:25.5054344Z           "complete": false,
2026-06-22T00:46:25.5054464Z           "evidence": []
2026-06-22T00:46:25.5054563Z         },
2026-06-22T00:46:25.5054661Z         "impl": {
2026-06-22T00:46:25.5054776Z           "complete": true,
2026-06-22T00:46:25.5054881Z           "evidence": [
2026-06-22T00:46:25.5054985Z             {
2026-06-22T00:46:25.5055129Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T00:46:25.5055229Z               "line": 26
2026-06-22T00:46:25.5055328Z             },
2026-06-22T00:46:25.5055434Z             {
2026-06-22T00:46:25.5055582Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T00:46:25.5055696Z               "line": 135
2026-06-22T00:46:25.5055802Z             },
2026-06-22T00:46:25.5055906Z             {
2026-06-22T00:46:25.5056054Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-22T00:46:25.5056164Z               "line": 26
2026-06-22T00:46:25.5056273Z             },
2026-06-22T00:46:25.5056369Z             {
2026-06-22T00:46:25.5056525Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-22T00:46:25.5056640Z               "line": 237
2026-06-22T00:46:25.5056747Z             }
2026-06-22T00:46:25.5056840Z           ]
2026-06-22T00:46:25.5056941Z         },
2026-06-22T00:46:25.5057037Z         "int": {
2026-06-22T00:46:25.5057155Z           "complete": false,
2026-06-22T00:46:25.5057259Z           "evidence": []
2026-06-22T00:46:25.5057364Z         },
2026-06-22T00:46:25.5057470Z         "unit": {
2026-06-22T00:46:25.5057583Z           "complete": true,
2026-06-22T00:46:25.5057698Z           "evidence": [
2026-06-22T00:46:25.5057803Z             {
2026-06-22T00:46:25.5057935Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T00:46:25.5058037Z               "line": 161
2026-06-22T00:46:25.5058142Z             },
2026-06-22T00:46:25.5058250Z             {
2026-06-22T00:46:25.5058385Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T00:46:25.5058489Z               "line": 170
2026-06-22T00:46:25.5058599Z             },
2026-06-22T00:46:25.5058695Z             {
2026-06-22T00:46:25.5058837Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T00:46:25.5059028Z               "line": 179
2026-06-22T00:46:25.5059133Z             },
2026-06-22T00:46:25.5059233Z             {
2026-06-22T00:46:25.5059377Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T00:46:25.5059485Z               "line": 190
2026-06-22T00:46:25.5059589Z             },
2026-06-22T00:46:25.5059698Z             {
2026-06-22T00:46:25.5059835Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T00:46:25.5059950Z               "line": 199
2026-06-22T00:46:25.5060055Z             },
2026-06-22T00:46:25.5060159Z             {
2026-06-22T00:46:25.5060299Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T00:46:25.5060408Z               "line": 216
2026-06-22T00:46:25.5060512Z             },
2026-06-22T00:46:25.5060613Z             {
2026-06-22T00:46:25.5060755Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T00:46:25.5060980Z               "line": 242
2026-06-22T00:46:25.5061084Z             },
2026-06-22T00:46:25.5061285Z             {
2026-06-22T00:46:25.5061423Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T00:46:25.5061525Z               "line": 295
2026-06-22T00:46:25.5061623Z             },
2026-06-22T00:46:25.5061728Z             {
2026-06-22T00:46:25.5061854Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T00:46:25.5061971Z               "line": 244
2026-06-22T00:46:25.5064928Z             },
2026-06-22T00:46:25.5065066Z             {
2026-06-22T00:46:25.5065240Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-22T00:46:25.5065346Z               "line": 265
2026-06-22T00:46:25.5065451Z             },
2026-06-22T00:46:25.5065550Z             {
2026-06-22T00:46:25.5065699Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-22T00:46:25.5065804Z               "line": 293
2026-06-22T00:46:25.5065917Z             },
2026-06-22T00:46:25.5066028Z             {
2026-06-22T00:46:25.5066175Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-22T00:46:25.5066295Z               "line": 317
2026-06-22T00:46:25.5066400Z             },
2026-06-22T00:46:25.5066504Z             {
2026-06-22T00:46:25.5066648Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-22T00:46:25.5066752Z               "line": 327
2026-06-22T00:46:25.5066861Z             },
2026-06-22T00:46:25.5066958Z             {
2026-06-22T00:46:25.5067114Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T00:46:25.5067224Z               "line": 540
2026-06-22T00:46:25.5067326Z             }
2026-06-22T00:46:25.5067428Z           ]
2026-06-22T00:46:25.5067530Z         }
2026-06-22T00:46:25.5067631Z       }
2026-06-22T00:46:25.5067734Z     },
2026-06-22T00:46:25.5067833Z     {
2026-06-22T00:46:25.5067991Z       "id": "REQ-HAZARD-DRIVEN-BY-IDLE-REMOTE-EVICT",
2026-06-22T00:46:25.5072827Z       "title": "An spt-hosted endpoint driven by a REMOTE controller whose remote is gone but whose broker connection stays OPEN (a wedged/lost pump that never delivers the detach) AND whose session is IDLE (no output) stays latched ONLINE+CONTROLLED forever: the W1 drain-evict only fires on OUTPUT (CONTROLLER_WRITE_DEADLINE on a backed-up write), a clean disconnect self-heals via detach_if→clear_controller, but an idle session with a half-open/wedged controller connection produces neither signal. PROVED repro-first on a real broker (v0.13.0 W5, inject_control_wedge.rs w5_a2): controller_by STAYS Some(origin) and driven_by STAYS Some after the remote is abandoned without a clean EOF on an idle session — so the brain reconcile CANNOT detect it from KIND_SESSIONS controller_by (the broker still reports it controlled). FIX DIRECTION (doyle ruling 2026-06-19, broker-side single-writer — the broker owns driven_by/clear_controller): wire the EXISTING D4c NetPresence connection-disconnect event → clear_controller for any session whose controller identity == the dead origin (become_controller already stores Some(origin); presence events already exist — modest wiring, NOT a new probe). The liveness ORACLE is QUIC's own keepalive/idle-timeout: a presence-disconnect IS a real QUIC conn close, already tolerant of transient blips within the keepalive window, so NO heavy partition ADR is needed UNLESS the QUIC timeout proves too slow for the UX (then mint an ADR for a faster controller-heartbeat + its false-evict bound). Composes with W1 (output path) + W5 Gap B (no-session) — this is the third, idle-remote, leg. (v0.13.0 follow-up)",
2026-06-22T00:46:25.5073012Z       "requiredStages": [],
2026-06-22T00:46:25.5073121Z       "stages": {
2026-06-22T00:46:25.5073225Z         "doc": {
2026-06-22T00:46:25.5073344Z           "complete": false,
2026-06-22T00:46:25.5073459Z           "evidence": []
2026-06-22T00:46:25.5073563Z         },
2026-06-22T00:46:25.5073663Z         "impl": {
2026-06-22T00:46:25.5073773Z           "complete": false,
2026-06-22T00:46:25.5074040Z           "evidence": []
2026-06-22T00:46:25.5074150Z         },
2026-06-22T00:46:25.5074259Z         "int": {
2026-06-22T00:46:25.5074459Z           "complete": false,
2026-06-22T00:46:25.5074569Z           "evidence": []
2026-06-22T00:46:25.5074670Z         },
2026-06-22T00:46:25.5074774Z         "unit": {
2026-06-22T00:46:25.5074893Z           "complete": false,
2026-06-22T00:46:25.5074994Z           "evidence": []
2026-06-22T00:46:25.5075089Z         }
2026-06-22T00:46:25.5075189Z       }
2026-06-22T00:46:25.5075276Z     },
2026-06-22T00:46:25.5075380Z     {
2026-06-22T00:46:25.5075521Z       "id": "REQ-HAZARD-DRIVEN-BY-SELFHEAL",
2026-06-22T00:46:25.5077131Z       "title": "An spt-hosted endpoint's ONLINE+CONTROLLED state (`driven_by`) must CLEAR even when the detach IPC is lost — do NOT rely on the detach signal (same lesson as REQ-HAZARD-HOSTED-LIVENESS-RECONCILE B2): the reconcile loop clears `driven_by` when the endpoint has no live controller/session. Today a wedged or lost pump never delivers the detach, so the endpoint stays latched CONTROLLED forever. Composes with W1 (the wedge no longer blocks the detach) and rides the same pull-primary reconcile substrate as B2. (v0.13.0)",
2026-06-22T00:46:25.5077279Z       "requiredStages": [
2026-06-22T00:46:25.5077384Z         "impl",
2026-06-22T00:46:25.5077489Z         "unit",
2026-06-22T00:46:25.5077594Z         "int"
2026-06-22T00:46:25.5077704Z       ],
2026-06-22T00:46:25.5077814Z       "stages": {
2026-06-22T00:46:25.5077914Z         "doc": {
2026-06-22T00:46:25.5078033Z           "complete": false,
2026-06-22T00:46:25.5078143Z           "evidence": []
2026-06-22T00:46:25.5078252Z         },
2026-06-22T00:46:25.5078355Z         "impl": {
2026-06-22T00:46:25.5078480Z           "complete": true,
2026-06-22T00:46:25.5078591Z           "evidence": [
2026-06-22T00:46:25.5078694Z             {
2026-06-22T00:46:25.5078843Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.5079027Z               "line": 538
2026-06-22T00:46:25.5079138Z             },
2026-06-22T00:46:25.5079238Z             {
2026-06-22T00:46:25.5079381Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T00:46:25.5079505Z               "line": 641
2026-06-22T00:46:25.5079596Z             },
2026-06-22T00:46:25.5079705Z             {
2026-06-22T00:46:25.5079876Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-22T00:46:25.5079976Z               "line": 21
2026-06-22T00:46:25.5080083Z             }
2026-06-22T00:46:25.5080186Z           ]
2026-06-22T00:46:25.5080291Z         },
2026-06-22T00:46:25.5080388Z         "int": {
2026-06-22T00:46:25.5080506Z           "complete": true,
2026-06-22T00:46:25.5080615Z           "evidence": [
2026-06-22T00:46:25.5080724Z             {
2026-06-22T00:46:25.5080894Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-22T00:46:25.5080998Z               "line": 236
2026-06-22T00:46:25.5081099Z             },
2026-06-22T00:46:25.5081203Z             {
2026-06-22T00:46:25.5081375Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-22T00:46:25.5081481Z               "line": 396
2026-06-22T00:46:25.5081590Z             },
2026-06-22T00:46:25.5081691Z             {
2026-06-22T00:46:25.5081861Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T00:46:25.5081967Z               "line": 1526
2026-06-22T00:46:25.5082058Z             },
2026-06-22T00:46:25.5082162Z             {
2026-06-22T00:46:25.5082330Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T00:46:25.5082434Z               "line": 1678
2026-06-22T00:46:25.5082534Z             }
2026-06-22T00:46:25.5082635Z           ]
2026-06-22T00:46:25.5082739Z         },
2026-06-22T00:46:25.5082848Z         "unit": {
2026-06-22T00:46:25.5082969Z           "complete": true,
2026-06-22T00:46:25.5083072Z           "evidence": [
2026-06-22T00:46:25.5083178Z             {
2026-06-22T00:46:25.5083327Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.5083538Z               "line": 887
2026-06-22T00:46:25.5083644Z             }
2026-06-22T00:46:25.5083836Z           ]
2026-06-22T00:46:25.5083942Z         }
2026-06-22T00:46:25.5084043Z       }
2026-06-22T00:46:25.5084147Z     },
2026-06-22T00:46:25.5084243Z     {
2026-06-22T00:46:25.5084390Z       "id": "REQ-HAZARD-DROP-FILE-SINGLE-WRITER",
2026-06-22T00:46:25.5084563Z       "title": "Drop files are daemon-owned single-writer (6.4)",
2026-06-22T00:46:25.5084667Z       "requiredStages": [
2026-06-22T00:46:25.5084767Z         "impl",
2026-06-22T00:46:25.5084867Z         "unit"
2026-06-22T00:46:25.5084977Z       ],
2026-06-22T00:46:25.5085072Z       "stages": {
2026-06-22T00:46:25.5085173Z         "doc": {
2026-06-22T00:46:25.5085282Z           "complete": false,
2026-06-22T00:46:25.5085396Z           "evidence": []
2026-06-22T00:46:25.5085502Z         },
2026-06-22T00:46:25.5085611Z         "impl": {
2026-06-22T00:46:25.5085726Z           "complete": true,
2026-06-22T00:46:25.5085846Z           "evidence": [
2026-06-22T00:46:25.5085945Z             {
2026-06-22T00:46:25.5086086Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T00:46:25.5086196Z               "line": 25
2026-06-22T00:46:25.5086295Z             },
2026-06-22T00:46:25.5086394Z             {
2026-06-22T00:46:25.5086533Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T00:46:25.5086647Z               "line": 26
2026-06-22T00:46:25.5086742Z             },
2026-06-22T00:46:25.5086838Z             {
2026-06-22T00:46:25.5086967Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T00:46:25.5087076Z               "line": 159
2026-06-22T00:46:25.5087177Z             }
2026-06-22T00:46:25.5087286Z           ]
2026-06-22T00:46:25.5087391Z         },
2026-06-22T00:46:25.5087496Z         "int": {
2026-06-22T00:46:25.5087615Z           "complete": false,
2026-06-22T00:46:25.5087725Z           "evidence": []
2026-06-22T00:46:25.5087830Z         },
2026-06-22T00:46:25.5087935Z         "unit": {
2026-06-22T00:46:25.5088054Z           "complete": true,
2026-06-22T00:46:25.5088164Z           "evidence": [
2026-06-22T00:46:25.5088269Z             {
2026-06-22T00:46:25.5088398Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T00:46:25.5088507Z               "line": 188
2026-06-22T00:46:25.5088612Z             },
2026-06-22T00:46:25.5088713Z             {
2026-06-22T00:46:25.5088845Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T00:46:25.5089035Z               "line": 240
2026-06-22T00:46:25.5089136Z             },
2026-06-22T00:46:25.5089254Z             {
2026-06-22T00:46:25.5089388Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T00:46:25.5089498Z               "line": 186
2026-06-22T00:46:25.5089592Z             }
2026-06-22T00:46:25.5089694Z           ]
2026-06-22T00:46:25.5089798Z         }
2026-06-22T00:46:25.5089897Z       }
2026-06-22T00:46:25.5089999Z     },
2026-06-22T00:46:25.5090094Z     {
2026-06-22T00:46:25.5090221Z       "id": "REQ-HAZARD-EBUSY-RENAME",
2026-06-22T00:46:25.5090409Z       "title": "tmp-write + atomic-rename + retry on Windows EBUSY (5.2)",
2026-06-22T00:46:25.5090522Z       "requiredStages": [
2026-06-22T00:46:25.5090629Z         "impl",
2026-06-22T00:46:25.5090724Z         "unit"
2026-06-22T00:46:25.5090823Z       ],
2026-06-22T00:46:25.5090923Z       "stages": {
2026-06-22T00:46:25.5091029Z         "doc": {
2026-06-22T00:46:25.5091127Z           "complete": false,
2026-06-22T00:46:25.5091231Z           "evidence": []
2026-06-22T00:46:25.5091332Z         },
2026-06-22T00:46:25.5091435Z         "impl": {
2026-06-22T00:46:25.5091539Z           "complete": true,
2026-06-22T00:46:25.5091650Z           "evidence": [
2026-06-22T00:46:25.5091754Z             {
2026-06-22T00:46:25.5091897Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T00:46:25.5092003Z               "line": 48
2026-06-22T00:46:25.5092106Z             },
2026-06-22T00:46:25.5092197Z             {
2026-06-22T00:46:25.5092435Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T00:46:25.5092542Z               "line": 55
2026-06-22T00:46:25.5092727Z             },
2026-06-22T00:46:25.5092822Z             {
2026-06-22T00:46:25.5092961Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T00:46:25.5093065Z               "line": 74
2026-06-22T00:46:25.5093166Z             },
2026-06-22T00:46:25.5093276Z             {
2026-06-22T00:46:25.5093404Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T00:46:25.5093510Z               "line": 91
2026-06-22T00:46:25.5093614Z             }
2026-06-22T00:46:25.5093719Z           ]
2026-06-22T00:46:25.5093825Z         },
2026-06-22T00:46:25.5093929Z         "int": {
2026-06-22T00:46:25.5094042Z           "complete": false,
2026-06-22T00:46:25.5094156Z           "evidence": []
2026-06-22T00:46:25.5094260Z         },
2026-06-22T00:46:25.5094359Z         "unit": {
2026-06-22T00:46:25.5094473Z           "complete": true,
2026-06-22T00:46:25.5094584Z           "evidence": [
2026-06-22T00:46:25.5094683Z             {
2026-06-22T00:46:25.5094823Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T00:46:25.5094936Z               "line": 149
2026-06-22T00:46:25.5095045Z             },
2026-06-22T00:46:25.5095142Z             {
2026-06-22T00:46:25.5095275Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T00:46:25.5095389Z               "line": 166
2026-06-22T00:46:25.5095481Z             },
2026-06-22T00:46:25.5095580Z             {
2026-06-22T00:46:25.5095708Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T00:46:25.5095819Z               "line": 176
2026-06-22T00:46:25.5095923Z             },
2026-06-22T00:46:25.5096023Z             {
2026-06-22T00:46:25.5096162Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T00:46:25.5096271Z               "line": 194
2026-06-22T00:46:25.5096377Z             },
2026-06-22T00:46:25.5096472Z             {
2026-06-22T00:46:25.5096613Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T00:46:25.5096733Z               "line": 207
2026-06-22T00:46:25.5096827Z             }
2026-06-22T00:46:25.5096940Z           ]
2026-06-22T00:46:25.5097035Z         }
2026-06-22T00:46:25.5097141Z       }
2026-06-22T00:46:25.5097245Z     },
2026-06-22T00:46:25.5097340Z     {
2026-06-22T00:46:25.5097479Z       "id": "REQ-HAZARD-ECHO-BEFORE-SIGNOFF",
2026-06-22T00:46:25.5097699Z       "title": "Echo-commune fires before INIT_SIGNOFF on orphan teardown (3.3)",
2026-06-22T00:46:25.5097808Z       "requiredStages": [
2026-06-22T00:46:25.5097912Z         "impl",
2026-06-22T00:46:25.5098019Z         "unit"
2026-06-22T00:46:25.5098118Z       ],
2026-06-22T00:46:25.5098227Z       "stages": {
2026-06-22T00:46:25.5098329Z         "doc": {
2026-06-22T00:46:25.5098433Z           "complete": false,
2026-06-22T00:46:25.5098542Z           "evidence": []
2026-06-22T00:46:25.5098644Z         },
2026-06-22T00:46:25.5098752Z         "impl": {
2026-06-22T00:46:25.5098857Z           "complete": true,
2026-06-22T00:46:25.5099062Z           "evidence": [
2026-06-22T00:46:25.5099162Z             {
2026-06-22T00:46:25.5099316Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T00:46:25.5099428Z               "line": 466
2026-06-22T00:46:25.5099528Z             },
2026-06-22T00:46:25.5099628Z             {
2026-06-22T00:46:25.5099762Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T00:46:25.5099871Z               "line": 26
2026-06-22T00:46:25.5099977Z             }
2026-06-22T00:46:25.5100077Z           ]
2026-06-22T00:46:25.5100181Z         },
2026-06-22T00:46:25.5100287Z         "int": {
2026-06-22T00:46:25.5100392Z           "complete": false,
2026-06-22T00:46:25.5100496Z           "evidence": []
2026-06-22T00:46:25.5100597Z         },
2026-06-22T00:46:25.5100706Z         "unit": {
2026-06-22T00:46:25.5100820Z           "complete": true,
2026-06-22T00:46:25.5100922Z           "evidence": [
2026-06-22T00:46:25.5101025Z             {
2026-06-22T00:46:25.5101269Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T00:46:25.5101363Z               "line": 150
2026-06-22T00:46:25.5101556Z             },
2026-06-22T00:46:25.5101659Z             {
2026-06-22T00:46:25.5101787Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T00:46:25.5101897Z               "line": 208
2026-06-22T00:46:25.5102000Z             }
2026-06-22T00:46:25.5102104Z           ]
2026-06-22T00:46:25.5102205Z         }
2026-06-22T00:46:25.5102310Z       }
2026-06-22T00:46:25.5102414Z     },
2026-06-22T00:46:25.5102510Z     {
2026-06-22T00:46:25.5102662Z       "id": "REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE",
2026-06-22T00:46:25.5111552Z       "title": "The effect journal serializes EVERY PTY effect under one mutex held ACROSS two fsyncs AND the blocking PTY write — so interactive input stutters and ultimately wedges the daemon hard. ROOT (doyle /diagnose, code-grounded + MEASURED on the operator's real Windows box, 2026-06-19): EffectJournal::apply_once (effect.rs:168-188) takes `inner.lock()` and holds it across `write_line(PENDING)` → `effect()` → `write_line(DONE)`, where write_line (effect.rs:235-239) does flush()+sync_all() (a full FlushFileBuffers) — so each effect pays TWO fsyncs under a GLOBAL lock, and the closure `effect()` (the actual PTY write, broker.rs:1257 EffectKind::PtyWrite via attach.rs:197 send_effect) runs while the lock is held. Two operator-visible facets, ONE root: (A) STUTTER/LAG — every keystroke is a PtyWrite effect = 2× sync_all serialized; measured fsync on %LOCALAPPDATA%\\spt-core = median 6.5ms, spikes to 198ms (C: was recently at 100%), so ~13ms+ per keystroke best case, hundreds under contention → 'many but not all keypresses take 100s of ms, choppy, worsens with volume'. (B) HARD PERMANENT WEDGE — when a PtyWrite `effect()` blocks (ConPTY input buffer full / harness not draining stdin), the journal lock is held INDEFINITELY → the single-threaded inbound-stream dispatch (dispatch.rs serve_attach, which both applies input effects AND opens attaches) can never progress → EVERY subsequent attach (`spt rc --view`/`--take`) fails with 'attach request: brain IPC read deadline elapsed' (confirmed: two retries deadline identically; broker control-plane KIND queries still answer — different thread). This REFUTES the W2-deferred ruling that park-(b)/(c) is 'Windows-benign because ConPTY absorbs 4MiB' — on the real box the input path wedges regardless. DISTINCT from W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST = the OUTPUT drain, correctly fixed @8b5583e; output uses broker.rs:1106 append, NOT the fsync journal). This is the INPUT/effect-journal path W1 never touched, and it is THE wedge the operator hits with --take/--view. FIX DIRECTION (candidates, repro-first — extend inject_control_wedge.rs to a REAL backed-up-PTY-consumer + a real rc-client attach assertion, the gap W1's gate missed): (1) do NOT hold the journal lock across effect() — reserve the key + fsync PENDING under lock, RELEASE, run effect(), re-acquire to fsync DONE + mark applied (preserve crash-idempotency via the per-key reservation, not a global hold); (2) bound/fail-fast the PtyWrite itself (the W2-deferred park bound — write_input must never block indefinitely, DSR-answer must not hold the writer mutex across a blocking write); (3) drop per-keystroke fsync on the interactive path — PtyWrite effects are EPHEMERAL (a keystroke lost on a broker crash is retyped; PTY state is not reconstructed from keystroke replay), so in-memory applied-set dedup suffices (the broker survives the brain — that IS the dedup anchor), with async/batched fsync or no-fsync for EffectKind::PtyWrite while durable kinds (NetSend/NetDial/Registry/Spool) keep their fsync. Combine (1)+(3) at minimum. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-22T00:46:25.5111777Z       "requiredStages": [
2026-06-22T00:46:25.5111877Z         "impl",
2026-06-22T00:46:25.5111977Z         "unit",
2026-06-22T00:46:25.5112083Z         "int"
2026-06-22T00:46:25.5112173Z       ],
2026-06-22T00:46:25.5112266Z       "stages": {
2026-06-22T00:46:25.5112490Z         "doc": {
2026-06-22T00:46:25.5112598Z           "complete": false,
2026-06-22T00:46:25.5112794Z           "evidence": []
2026-06-22T00:46:25.5112889Z         },
2026-06-22T00:46:25.5112998Z         "impl": {
2026-06-22T00:46:25.5113109Z           "complete": true,
2026-06-22T00:46:25.5113218Z           "evidence": [
2026-06-22T00:46:25.5113318Z             {
2026-06-22T00:46:25.5113470Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T00:46:25.5113570Z               "line": 99
2026-06-22T00:46:25.5113667Z             },
2026-06-22T00:46:25.5113767Z             {
2026-06-22T00:46:25.5113908Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T00:46:25.5114015Z               "line": 201
2026-06-22T00:46:25.5114119Z             }
2026-06-22T00:46:25.5114214Z           ]
2026-06-22T00:46:25.5114316Z         },
2026-06-22T00:46:25.5114415Z         "int": {
2026-06-22T00:46:25.5114529Z           "complete": true,
2026-06-22T00:46:25.5114631Z           "evidence": [
2026-06-22T00:46:25.5114739Z             {
2026-06-22T00:46:25.5114916Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T00:46:25.5115031Z               "line": 737
2026-06-22T00:46:25.5115133Z             }
2026-06-22T00:46:25.5115233Z           ]
2026-06-22T00:46:25.5115334Z         },
2026-06-22T00:46:25.5115432Z         "unit": {
2026-06-22T00:46:25.5115550Z           "complete": true,
2026-06-22T00:46:25.5115661Z           "evidence": [
2026-06-22T00:46:25.5115761Z             {
2026-06-22T00:46:25.5115909Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T00:46:25.5116018Z               "line": 517
2026-06-22T00:46:25.5116127Z             },
2026-06-22T00:46:25.5116224Z             {
2026-06-22T00:46:25.5116357Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T00:46:25.5116466Z               "line": 576
2026-06-22T00:46:25.5116567Z             }
2026-06-22T00:46:25.5116671Z           ]
2026-06-22T00:46:25.5116762Z         }
2026-06-22T00:46:25.5116872Z       }
2026-06-22T00:46:25.5116972Z     },
2026-06-22T00:46:25.5117081Z     {
2026-06-22T00:46:25.5117230Z       "id": "REQ-HAZARD-ELEVATED-DAEMON-SPAWN",
2026-06-22T00:46:25.5118547Z       "title": "The daemon always runs unelevated in the invoking user's universe, regardless of which command spawns it: an elevated spawner de-elevates (Windows: UAC linked token via CreateProcessWithTokenW; Linux: drop to SUDO_UID/SUDO_GID + the invoker's HOME) — an elevated daemon's pipes deny unelevated clients (every later spt reads not-running→spawn→bind Access-denied) and a sudo'd daemon roots the user's state universe (5.7)",
2026-06-22T00:46:25.5118675Z       "requiredStages": [
2026-06-22T00:46:25.5118781Z         "doc",
2026-06-22T00:46:25.5118890Z         "impl",
2026-06-22T00:46:25.5119081Z         "unit"
2026-06-22T00:46:25.5119177Z       ],
2026-06-22T00:46:25.5119281Z       "stages": {
2026-06-22T00:46:25.5119386Z         "doc": {
2026-06-22T00:46:25.5119496Z           "complete": true,
2026-06-22T00:46:25.5119610Z           "evidence": [
2026-06-22T00:46:25.5119715Z             {
2026-06-22T00:46:25.5119853Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T00:46:25.5119958Z               "line": 214
2026-06-22T00:46:25.5120064Z             }
2026-06-22T00:46:25.5120168Z           ]
2026-06-22T00:46:25.5120273Z         },
2026-06-22T00:46:25.5120369Z         "impl": {
2026-06-22T00:46:25.5120478Z           "complete": true,
2026-06-22T00:46:25.5120592Z           "evidence": [
2026-06-22T00:46:25.5120691Z             {
2026-06-22T00:46:25.5120840Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.5120939Z               "line": 56
2026-06-22T00:46:25.5121035Z             },
2026-06-22T00:46:25.5121135Z             {
2026-06-22T00:46:25.5121277Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.5121388Z               "line": 580
2026-06-22T00:46:25.5121493Z             },
2026-06-22T00:46:25.5121597Z             {
2026-06-22T00:46:25.5121850Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T00:46:25.5121970Z               "line": 36
2026-06-22T00:46:25.5122165Z             },
2026-06-22T00:46:25.5122270Z             {
2026-06-22T00:46:25.5122423Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T00:46:25.5122527Z               "line": 59
2026-06-22T00:46:25.5122638Z             },
2026-06-22T00:46:25.5122733Z             {
2026-06-22T00:46:25.5122879Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T00:46:25.5122984Z               "line": 83
2026-06-22T00:46:25.5123078Z             },
2026-06-22T00:46:25.5123186Z             {
2026-06-22T00:46:25.5123320Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T00:46:25.5123430Z               "line": 140
2026-06-22T00:46:25.5123529Z             },
2026-06-22T00:46:25.5123630Z             {
2026-06-22T00:46:25.5123773Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T00:46:25.5123897Z               "line": 159
2026-06-22T00:46:25.5124003Z             },
2026-06-22T00:46:25.5124102Z             {
2026-06-22T00:46:25.5124255Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T00:46:25.5124364Z               "line": 384
2026-06-22T00:46:25.5124473Z             },
2026-06-22T00:46:25.5124570Z             {
2026-06-22T00:46:25.5124718Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T00:46:25.5124817Z               "line": 535
2026-06-22T00:46:25.5124923Z             },
2026-06-22T00:46:25.5125027Z             {
2026-06-22T00:46:25.5125171Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T00:46:25.5125281Z               "line": 581
2026-06-22T00:46:25.5125385Z             },
2026-06-22T00:46:25.5125491Z             {
2026-06-22T00:46:25.5125628Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T00:46:25.5125737Z               "line": 300
2026-06-22T00:46:25.5125846Z             },
2026-06-22T00:46:25.5125955Z             {
2026-06-22T00:46:25.5126087Z               "path": "crates/spt/src/main.rs",
2026-06-22T00:46:25.5126192Z               "line": 42
2026-06-22T00:46:25.5126293Z             }
2026-06-22T00:46:25.5126401Z           ]
2026-06-22T00:46:25.5126498Z         },
2026-06-22T00:46:25.5126608Z         "int": {
2026-06-22T00:46:25.5126721Z           "complete": false,
2026-06-22T00:46:25.5126832Z           "evidence": []
2026-06-22T00:46:25.5126942Z         },
2026-06-22T00:46:25.5127069Z         "unit": {
2026-06-22T00:46:25.5127231Z           "complete": true,
2026-06-22T00:46:25.5127341Z           "evidence": [
2026-06-22T00:46:25.5127447Z             {
2026-06-22T00:46:25.5127593Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T00:46:25.5127704Z               "line": 813
2026-06-22T00:46:25.5127810Z             },
2026-06-22T00:46:25.5127913Z             {
2026-06-22T00:46:25.5128058Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T00:46:25.5128162Z               "line": 854
2026-06-22T00:46:25.5128270Z             },
2026-06-22T00:46:25.5128370Z             {
2026-06-22T00:46:25.5128517Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T00:46:25.5128625Z               "line": 928
2026-06-22T00:46:25.5128721Z             }
2026-06-22T00:46:25.5128822Z           ]
2026-06-22T00:46:25.5128925Z         }
2026-06-22T00:46:25.5129112Z       }
2026-06-22T00:46:25.5129216Z     },
2026-06-22T00:46:25.5129316Z     {
2026-06-22T00:46:25.5129474Z       "id": "REQ-HAZARD-ENDPOINT-RUN-ATTACH-OUTPUT",
2026-06-22T00:46:25.5134286Z       "title": "A clean `spt rc` attach to a LIVE spt-hosted (`endpoint run`) harness must DELIVER the harness's PTY output. KEYSTONE — the operator's central 'attach shows no output' symptom, reproduced on the real dummy-harness fixture (v0.12.1 Wave 1) with NO death and NO wedge: bringup succeeds (online, harness pid alive + heartbeating, psyche hosted), the attach CONNECTS (PUMP_IPC_READER spawned, no RC_FAIL, holds the full window) — but receives EXACTLY 0 bytes over 10s of the harness's flushed [session.self] stdout. DISTINCT from REQ-HAZARD-VIEWER-CLOSE-DETACH (death) and REQ-HAZARD-ATTACH-WEDGE (dead-child backpressure): here the harness is ALIVE and the attach is a clean first subscribe. This BLOCKS the 'view is independent' invariant — re-attach is meaningless if a live endpoint-run harness shows nothing. KNOWN-GOOD (rules out 'no drain'): attach.rs `local_attach_via_loopback_conn_rides_the_same_pump` + `broker_spawns_the_pty_child_in_the_requested_cwd` prove the broker DOES drain+fan a `spawn_session` PTY child to a loopback attach over the SAME transport rc uses. Both spawn_session and endpoint-run's spawn_session_pid send KIND_SPAWN → the same dispatch_spawn (broker.rs:706/835) which starts the per-session drain+OutputLog — so the gap is NARROWER than 'no drain', endpoint-run-specific. Root candidates: (a) spawn_session_pid's SpawnReq stdio/env/cwd differs so the dummy's stdout isn't the captured ConPTY; (b) the harness stdout WRITE BLOCKS because the ConPTY buffer fills (drain not reading THIS pty) — explains alive-but-0-bytes; (c) ConPTY reader-park (KH 7.6) on this path; (d) `spt rc` resolve_session/subscribe for an endpoint-run session subscribes to the wrong/empty log. (v0.12.1)",
2026-06-22T00:46:25.5134648Z       "requiredStages": [
2026-06-22T00:46:25.5134753Z         "impl",
2026-06-22T00:46:25.5134858Z         "unit",
2026-06-22T00:46:25.5134963Z         "int"
2026-06-22T00:46:25.5135072Z       ],
2026-06-22T00:46:25.5135173Z       "stages": {
2026-06-22T00:46:25.5135282Z         "doc": {
2026-06-22T00:46:25.5135387Z           "complete": false,
2026-06-22T00:46:25.5135507Z           "evidence": []
2026-06-22T00:46:25.5135616Z         },
2026-06-22T00:46:25.5135717Z         "impl": {
2026-06-22T00:46:25.5135836Z           "complete": true,
2026-06-22T00:46:25.5135945Z           "evidence": [
2026-06-22T00:46:25.5136051Z             {
2026-06-22T00:46:25.5136202Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T00:46:25.5136320Z               "line": 204
2026-06-22T00:46:25.5136425Z             }
2026-06-22T00:46:25.5136533Z           ]
2026-06-22T00:46:25.5136637Z         },
2026-06-22T00:46:25.5136743Z         "int": {
2026-06-22T00:46:25.5136862Z           "complete": true,
2026-06-22T00:46:25.5136966Z           "evidence": [
2026-06-22T00:46:25.5137072Z             {
2026-06-22T00:46:25.5137224Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-22T00:46:25.5137334Z               "line": 296
2026-06-22T00:46:25.5137439Z             }
2026-06-22T00:46:25.5137539Z           ]
2026-06-22T00:46:25.5137644Z         },
2026-06-22T00:46:25.5137745Z         "unit": {
2026-06-22T00:46:25.5137859Z           "complete": true,
2026-06-22T00:46:25.5137968Z           "evidence": [
2026-06-22T00:46:25.5138074Z             {
2026-06-22T00:46:25.5138225Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T00:46:25.5138336Z               "line": 467
2026-06-22T00:46:25.5138440Z             }
2026-06-22T00:46:25.5138545Z           ]
2026-06-22T00:46:25.5138656Z         }
2026-06-22T00:46:25.5138760Z       }
2026-06-22T00:46:25.5138864Z     },
2026-06-22T00:46:25.5139044Z     {
2026-06-22T00:46:25.5139171Z       "id": "REQ-HAZARD-ENV-SUBST",
2026-06-22T00:46:25.5142485Z       "title": "`spt endpoint run` HONORS manifest [env.<VAR>] direction=inject values (with {key} substitution) on the spt-hosted spawn. Today only the [session.self] command ARGV is {id}-substituted; the [env] inject value is NEITHER substituted NOR applied — manifest.schema.json promises EnvVar.value = 'Value to inject (with substitution)' but prepare_harness_spawn fills only argv and SpawnReq carries no env, so a [env.SPT_ENDPOINT_ID].value='{id}' arrives EMPTY. A FLAGLESS harness (bare `claude`, no argv slot for {id}) then routes the id via [env] → empty → SessionStart sees empty $SPT_ENDPOINT_ID → seeds-by-PPID instead of binding → ZERO perch → NO_PERCH (the actual wall-b bind blocker; perri hard-repro'd). SILENT failure (empty inject, no error). FIX (doyle ruled a): fill every [env] inject value from the SAME {key} catalog as argv/role (mirror F-009 TEMPLATE fill, whole-string fill_template for an env value), thread it through SpawnReq.env → the broker sets it on the spawned PTY child. Correctness fix — schema already promises it, NO manifest change, NO new binary. PAIRS with REQ-SEND-SPT-HOSTED to make endpoint run fully work. doyle F-013. (post-v0.10.0)",
2026-06-22T00:46:25.5142847Z       "requiredStages": [
2026-06-22T00:46:25.5142956Z         "impl",
2026-06-22T00:46:25.5143060Z         "unit",
2026-06-22T00:46:25.5143167Z         "int"
2026-06-22T00:46:25.5143266Z       ],
2026-06-22T00:46:25.5143375Z       "stages": {
2026-06-22T00:46:25.5143482Z         "doc": {
2026-06-22T00:46:25.5143599Z           "complete": false,
2026-06-22T00:46:25.5143714Z           "evidence": []
2026-06-22T00:46:25.5143811Z         },
2026-06-22T00:46:25.5143914Z         "impl": {
2026-06-22T00:46:25.5144018Z           "complete": true,
2026-06-22T00:46:25.5144142Z           "evidence": [
2026-06-22T00:46:25.5144235Z             {
2026-06-22T00:46:25.5144407Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T00:46:25.5144536Z               "line": 123
2026-06-22T00:46:25.5144631Z             },
2026-06-22T00:46:25.5144727Z             {
2026-06-22T00:46:25.5144865Z               "path": "crates/spt-term/src/pty.rs",
2026-06-22T00:46:25.5144974Z               "line": 134
2026-06-22T00:46:25.5145080Z             }
2026-06-22T00:46:25.5145184Z           ]
2026-06-22T00:46:25.5145284Z         },
2026-06-22T00:46:25.5145386Z         "int": {
2026-06-22T00:46:25.5145504Z           "complete": true,
2026-06-22T00:46:25.5145603Z           "evidence": [
2026-06-22T00:46:25.5145710Z             {
2026-06-22T00:46:25.5145861Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T00:46:25.5145967Z               "line": 312
2026-06-22T00:46:25.5146081Z             },
2026-06-22T00:46:25.5146186Z             {
2026-06-22T00:46:25.5146335Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T00:46:25.5146438Z               "line": 525
2026-06-22T00:46:25.5146592Z             }
2026-06-22T00:46:25.5146692Z           ]
2026-06-22T00:46:25.5146786Z         },
2026-06-22T00:46:25.5146895Z         "unit": {
2026-06-22T00:46:25.5147000Z           "complete": true,
2026-06-22T00:46:25.5147117Z           "evidence": [
2026-06-22T00:46:25.5147216Z             {
2026-06-22T00:46:25.5147380Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T00:46:25.5147479Z               "line": 250
2026-06-22T00:46:25.5147584Z             }
2026-06-22T00:46:25.5147685Z           ]
2026-06-22T00:46:25.5147784Z         }
2026-06-22T00:46:25.5147884Z       }
2026-06-22T00:46:25.5147985Z     },
2026-06-22T00:46:25.5148085Z     {
2026-06-22T00:46:25.5148218Z       "id": "REQ-HAZARD-ENVELOPE-CR-LINESAFE",
2026-06-22T00:46:25.5150022Z       "title": "Envelope CR-linesafety (4.1): the line-framed EVENT codec must neutralize raw carriage returns — `event_body_escape` folds CRLF/lone-CR to the codec's representable linebreak (`\\n`→`<br>`) BEFORE framing, so a body carrying `\\r` (Windows `echo`/CRLF text crossing nodes) cannot survive into the single-line envelope and trigger a receiver terminal CR→col0 overwrite that corrupts the frame. Robustness on unrepresentable input, NOT a wire-format change (decoder untouched, amp-last invariant held). Belt-and-suspenders: `spt send`/`ring` also trim stdin (parity with `notify`).",
2026-06-22T00:46:25.5150156Z       "requiredStages": [
2026-06-22T00:46:25.5150256Z         "impl",
2026-06-22T00:46:25.5150365Z         "unit"
2026-06-22T00:46:25.5150466Z       ],
2026-06-22T00:46:25.5150571Z       "stages": {
2026-06-22T00:46:25.5150680Z         "doc": {
2026-06-22T00:46:25.5150786Z           "complete": false,
2026-06-22T00:46:25.5150895Z           "evidence": []
2026-06-22T00:46:25.5150995Z         },
2026-06-22T00:46:25.5151115Z         "impl": {
2026-06-22T00:46:25.5151342Z           "complete": true,
2026-06-22T00:46:25.5151458Z           "evidence": [
2026-06-22T00:46:25.5151595Z             {
2026-06-22T00:46:25.5151854Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T00:46:25.5151967Z               "line": 31
2026-06-22T00:46:25.5152064Z             }
2026-06-22T00:46:25.5152178Z           ]
2026-06-22T00:46:25.5152276Z         },
2026-06-22T00:46:25.5152381Z         "int": {
2026-06-22T00:46:25.5152497Z           "complete": false,
2026-06-22T00:46:25.5152600Z           "evidence": []
2026-06-22T00:46:25.5152706Z         },
2026-06-22T00:46:25.5152811Z         "unit": {
2026-06-22T00:46:25.5152920Z           "complete": true,
2026-06-22T00:46:25.5153035Z           "evidence": [
2026-06-22T00:46:25.5153140Z             {
2026-06-22T00:46:25.5153282Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T00:46:25.5153384Z               "line": 181
2026-06-22T00:46:25.5153487Z             }
2026-06-22T00:46:25.5153592Z           ]
2026-06-22T00:46:25.5153703Z         }
2026-06-22T00:46:25.5153802Z       }
2026-06-22T00:46:25.5153902Z     },
2026-06-22T00:46:25.5154013Z     {
2026-06-22T00:46:25.5154159Z       "id": "REQ-HAZARD-ENVELOPE-DECODE-ORDER",
2026-06-22T00:46:25.5154338Z       "title": "Envelope decode order, ampersand decoded last (4.1)",
2026-06-22T00:46:25.5154450Z       "requiredStages": [
2026-06-22T00:46:25.5154554Z         "impl",
2026-06-22T00:46:25.5154655Z         "unit"
2026-06-22T00:46:25.5154758Z       ],
2026-06-22T00:46:25.5154867Z       "stages": {
2026-06-22T00:46:25.5154972Z         "doc": {
2026-06-22T00:46:25.5155092Z           "complete": false,
2026-06-22T00:46:25.5155200Z           "evidence": []
2026-06-22T00:46:25.5155306Z         },
2026-06-22T00:46:25.5155416Z         "impl": {
2026-06-22T00:46:25.5155529Z           "complete": true,
2026-06-22T00:46:25.5155636Z           "evidence": [
2026-06-22T00:46:25.5155740Z             {
2026-06-22T00:46:25.5155893Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T00:46:25.5156007Z               "line": 49
2026-06-22T00:46:25.5156107Z             },
2026-06-22T00:46:25.5156217Z             {
2026-06-22T00:46:25.5156364Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T00:46:25.5156469Z               "line": 81
2026-06-22T00:46:25.5156566Z             }
2026-06-22T00:46:25.5156674Z           ]
2026-06-22T00:46:25.5156774Z         },
2026-06-22T00:46:25.5156885Z         "int": {
2026-06-22T00:46:25.5157007Z           "complete": false,
2026-06-22T00:46:25.5157104Z           "evidence": []
2026-06-22T00:46:25.5157210Z         },
2026-06-22T00:46:25.5157318Z         "unit": {
2026-06-22T00:46:25.5157431Z           "complete": true,
2026-06-22T00:46:25.5157536Z           "evidence": [
2026-06-22T00:46:25.5157639Z             {
2026-06-22T00:46:25.5157786Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T00:46:25.5157897Z               "line": 156
2026-06-22T00:46:25.5158001Z             },
2026-06-22T00:46:25.5158106Z             {
2026-06-22T00:46:25.5158250Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T00:46:25.5158363Z               "line": 173
2026-06-22T00:46:25.5158474Z             },
2026-06-22T00:46:25.5158579Z             {
2026-06-22T00:46:25.5158716Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T00:46:25.5158822Z               "line": 196
2026-06-22T00:46:25.5158917Z             }
2026-06-22T00:46:25.5159089Z           ]
2026-06-22T00:46:25.5159194Z         }
2026-06-22T00:46:25.5159293Z       }
2026-06-22T00:46:25.5159394Z     },
2026-06-22T00:46:25.5159537Z     {
2026-06-22T00:46:25.5159684Z       "id": "REQ-HAZARD-ENVELOPE-PARSER-SAFE",
2026-06-22T00:46:25.5159927Z       "title": "Two-slice envelope parser is panic-free and tolerant (4.2)",
2026-06-22T00:46:25.5160060Z       "requiredStages": [
2026-06-22T00:46:25.5160160Z         "impl",
2026-06-22T00:46:25.5160268Z         "unit"
2026-06-22T00:46:25.5160362Z       ],
2026-06-22T00:46:25.5160464Z       "stages": {
2026-06-22T00:46:25.5160682Z         "doc": {
2026-06-22T00:46:25.5160803Z           "complete": false,
2026-06-22T00:46:25.5160997Z           "evidence": []
2026-06-22T00:46:25.5161098Z         },
2026-06-22T00:46:25.5161207Z         "impl": {
2026-06-22T00:46:25.5161326Z           "complete": true,
2026-06-22T00:46:25.5161427Z           "evidence": [
2026-06-22T00:46:25.5161536Z             {
2026-06-22T00:46:25.5161680Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T00:46:25.5161794Z               "line": 120
2026-06-22T00:46:25.5161893Z             }
2026-06-22T00:46:25.5162004Z           ]
2026-06-22T00:46:25.5162103Z         },
2026-06-22T00:46:25.5162204Z         "int": {
2026-06-22T00:46:25.5162324Z           "complete": false,
2026-06-22T00:46:25.5162437Z           "evidence": []
2026-06-22T00:46:25.5162542Z         },
2026-06-22T00:46:25.5162634Z         "unit": {
2026-06-22T00:46:25.5162747Z           "complete": true,
2026-06-22T00:46:25.5162860Z           "evidence": [
2026-06-22T00:46:25.5162970Z             {
2026-06-22T00:46:25.5163118Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T00:46:25.5163227Z               "line": 212
2026-06-22T00:46:25.5163338Z             },
2026-06-22T00:46:25.5163429Z             {
2026-06-22T00:46:25.5163576Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T00:46:25.5163690Z               "line": 221
2026-06-22T00:46:25.5163795Z             },
2026-06-22T00:46:25.5163900Z             {
2026-06-22T00:46:25.5164038Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T00:46:25.5164147Z               "line": 229
2026-06-22T00:46:25.5164249Z             },
2026-06-22T00:46:25.5164353Z             {
2026-06-22T00:46:25.5164501Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T00:46:25.5164612Z               "line": 239
2026-06-22T00:46:25.5164719Z             },
2026-06-22T00:46:25.5164821Z             {
2026-06-22T00:46:25.5164964Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T00:46:25.5165086Z               "line": 249
2026-06-22T00:46:25.5165186Z             }
2026-06-22T00:46:25.5165300Z           ]
2026-06-22T00:46:25.5165399Z         }
2026-06-22T00:46:25.5165504Z       }
2026-06-22T00:46:25.5165604Z     },
2026-06-22T00:46:25.5165708Z     {
2026-06-22T00:46:25.5165842Z       "id": "REQ-HAZARD-EPHEMERAL-CLEANUP",
2026-06-22T00:46:25.5166032Z       "title": "Ephemeral perch cleanup on every ring exit path (3.1)",
2026-06-22T00:46:25.5169276Z       "requiredStages": [
2026-06-22T00:46:25.5169420Z         "impl",
2026-06-22T00:46:25.5169520Z         "unit"
2026-06-22T00:46:25.5169615Z       ],
2026-06-22T00:46:25.5169726Z       "stages": {
2026-06-22T00:46:25.5169829Z         "doc": {
2026-06-22T00:46:25.5169944Z           "complete": false,
2026-06-22T00:46:25.5170054Z           "evidence": []
2026-06-22T00:46:25.5170149Z         },
2026-06-22T00:46:25.5170259Z         "impl": {
2026-06-22T00:46:25.5170374Z           "complete": true,
2026-06-22T00:46:25.5170501Z           "evidence": [
2026-06-22T00:46:25.5170601Z             {
2026-06-22T00:46:25.5170748Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T00:46:25.5170870Z               "line": 14
2026-06-22T00:46:25.5170971Z             },
2026-06-22T00:46:25.5171067Z             {
2026-06-22T00:46:25.5171189Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T00:46:25.5171305Z               "line": 63
2026-06-22T00:46:25.5171405Z             }
2026-06-22T00:46:25.5171513Z           ]
2026-06-22T00:46:25.5171620Z         },
2026-06-22T00:46:25.5171724Z         "int": {
2026-06-22T00:46:25.5171842Z           "complete": false,
2026-06-22T00:46:25.5171940Z           "evidence": []
2026-06-22T00:46:25.5172044Z         },
2026-06-22T00:46:25.5172148Z         "unit": {
2026-06-22T00:46:25.5172264Z           "complete": true,
2026-06-22T00:46:25.5172373Z           "evidence": [
2026-06-22T00:46:25.5172472Z             {
2026-06-22T00:46:25.5172602Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T00:46:25.5172840Z               "line": 164
2026-06-22T00:46:25.5172950Z             },
2026-06-22T00:46:25.5173141Z             {
2026-06-22T00:46:25.5173284Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T00:46:25.5173382Z               "line": 198
2026-06-22T00:46:25.5173487Z             },
2026-06-22T00:46:25.5173593Z             {
2026-06-22T00:46:25.5173721Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T00:46:25.5173821Z               "line": 220
2026-06-22T00:46:25.5173922Z             }
2026-06-22T00:46:25.5174026Z           ]
2026-06-22T00:46:25.5174131Z         }
2026-06-22T00:46:25.5174223Z       }
2026-06-22T00:46:25.5174322Z     },
2026-06-22T00:46:25.5174417Z     {
2026-06-22T00:46:25.5174546Z       "id": "REQ-HAZARD-EPOCH-RESET",
2026-06-22T00:46:25.5175930Z       "title": "Advertisement-epoch reset strands a node: peers' higher last-seen epoch drops the reset node's fresh advertisements as Stale until the counter outruns history. Common case (full reinstall/re-pair) is mitigated by REQ-SUBNET-7's ceremony eviction (peer-side epoch memory dies with the deleted row — acceptance-verified); the residual narrow slice (epoch file lost, identity kept) is documented, guard deferred to a field hit (4.11)",
2026-06-22T00:46:25.5176078Z       "requiredStages": [],
2026-06-22T00:46:25.5176179Z       "stages": {
2026-06-22T00:46:25.5176273Z         "doc": {
2026-06-22T00:46:25.5176388Z           "complete": true,
2026-06-22T00:46:25.5176498Z           "evidence": [
2026-06-22T00:46:25.5176602Z             {
2026-06-22T00:46:25.5176746Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T00:46:25.5176851Z               "line": 165
2026-06-22T00:46:25.5176960Z             }
2026-06-22T00:46:25.5177061Z           ]
2026-06-22T00:46:25.5177165Z         },
2026-06-22T00:46:25.5177269Z         "impl": {
2026-06-22T00:46:25.5177390Z           "complete": false,
2026-06-22T00:46:25.5177499Z           "evidence": []
2026-06-22T00:46:25.5177604Z         },
2026-06-22T00:46:25.5177724Z         "int": {
2026-06-22T00:46:25.5177837Z           "complete": false,
2026-06-22T00:46:25.5177962Z           "evidence": []
2026-06-22T00:46:25.5178067Z         },
2026-06-22T00:46:25.5178171Z         "unit": {
2026-06-22T00:46:25.5178292Z           "complete": false,
2026-06-22T00:46:25.5178392Z           "evidence": []
2026-06-22T00:46:25.5178499Z         }
2026-06-22T00:46:25.5178594Z       }
2026-06-22T00:46:25.5178700Z     },
2026-06-22T00:46:25.5178807Z     {
2026-06-22T00:46:25.5179017Z       "id": "REQ-HAZARD-EVENTPART-REASSEMBLY",
2026-06-22T00:46:25.5179265Z       "title": "EVENT-PART split/reassembly is byte-exact; orphan parts dropped silently",
2026-06-22T00:46:25.5179384Z       "requiredStages": [
2026-06-22T00:46:25.5179488Z         "impl",
2026-06-22T00:46:25.5179589Z         "unit"
2026-06-22T00:46:25.5179694Z       ],
2026-06-22T00:46:25.5179798Z       "stages": {
2026-06-22T00:46:25.5179894Z         "doc": {
2026-06-22T00:46:25.5180004Z           "complete": false,
2026-06-22T00:46:25.5180108Z           "evidence": []
2026-06-22T00:46:25.5180214Z         },
2026-06-22T00:46:25.5180323Z         "impl": {
2026-06-22T00:46:25.5180442Z           "complete": true,
2026-06-22T00:46:25.5180548Z           "evidence": [
2026-06-22T00:46:25.5180643Z             {
2026-06-22T00:46:25.5180791Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T00:46:25.5180897Z               "line": 76
2026-06-22T00:46:25.5181005Z             },
2026-06-22T00:46:25.5181104Z             {
2026-06-22T00:46:25.5181252Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T00:46:25.5181364Z               "line": 167
2026-06-22T00:46:25.5181454Z             },
2026-06-22T00:46:25.5181555Z             {
2026-06-22T00:46:25.5181683Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T00:46:25.5181798Z               "line": 233
2026-06-22T00:46:25.5181884Z             },
2026-06-22T00:46:25.5181994Z             {
2026-06-22T00:46:25.5182136Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T00:46:25.5182355Z               "line": 272
2026-06-22T00:46:25.5182566Z             }
2026-06-22T00:46:25.5182666Z           ]
2026-06-22T00:46:25.5182766Z         },
2026-06-22T00:46:25.5182871Z         "int": {
2026-06-22T00:46:25.5182981Z           "complete": false,
2026-06-22T00:46:25.5183086Z           "evidence": []
2026-06-22T00:46:25.5183186Z         },
2026-06-22T00:46:25.5183290Z         "unit": {
2026-06-22T00:46:25.5183406Z           "complete": true,
2026-06-22T00:46:25.5183510Z           "evidence": [
2026-06-22T00:46:25.5183609Z             {
2026-06-22T00:46:25.5183754Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T00:46:25.5183867Z               "line": 321
2026-06-22T00:46:25.5183966Z             },
2026-06-22T00:46:25.5184066Z             {
2026-06-22T00:46:25.5184201Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T00:46:25.5184309Z               "line": 329
2026-06-22T00:46:25.5184454Z             },
2026-06-22T00:46:25.5184558Z             {
2026-06-22T00:46:25.5184691Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T00:46:25.5184806Z               "line": 356
2026-06-22T00:46:25.5184906Z             },
2026-06-22T00:46:25.5185010Z             {
2026-06-22T00:46:25.5185140Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T00:46:25.5185249Z               "line": 395
2026-06-22T00:46:25.5185355Z             },
2026-06-22T00:46:25.5185464Z             {
2026-06-22T00:46:25.5185592Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T00:46:25.5185694Z               "line": 406
2026-06-22T00:46:25.5185798Z             },
2026-06-22T00:46:25.5185907Z             {
2026-06-22T00:46:25.5186042Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T00:46:25.5186141Z               "line": 418
2026-06-22T00:46:25.5186245Z             },
2026-06-22T00:46:25.5186344Z             {
2026-06-22T00:46:25.5186490Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T00:46:25.5186604Z               "line": 442
2026-06-22T00:46:25.5186710Z             }
2026-06-22T00:46:25.5186805Z           ]
2026-06-22T00:46:25.5186900Z         }
2026-06-22T00:46:25.5186996Z       }
2026-06-22T00:46:25.5187092Z     },
2026-06-22T00:46:25.5187195Z     {
2026-06-22T00:46:25.5187326Z       "id": "REQ-HAZARD-GEN-START-NOW",
2026-06-22T00:46:25.5187496Z       "title": "gen_start = now() on cold-start and handoff (2.4)",
2026-06-22T00:46:25.5187611Z       "requiredStages": [
2026-06-22T00:46:25.5187720Z         "impl",
2026-06-22T00:46:25.5187820Z         "int"
2026-06-22T00:46:25.5187922Z       ],
2026-06-22T00:46:25.5188030Z       "stages": {
2026-06-22T00:46:25.5188135Z         "doc": {
2026-06-22T00:46:25.5188241Z           "complete": false,
2026-06-22T00:46:25.5188345Z           "evidence": []
2026-06-22T00:46:25.5188450Z         },
2026-06-22T00:46:25.5188551Z         "impl": {
2026-06-22T00:46:25.5188670Z           "complete": true,
2026-06-22T00:46:25.5188774Z           "evidence": [
2026-06-22T00:46:25.5188871Z             {
2026-06-22T00:46:25.5189102Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T00:46:25.5189216Z               "line": 22
2026-06-22T00:46:25.5189320Z             }
2026-06-22T00:46:25.5189424Z           ]
2026-06-22T00:46:25.5189524Z         },
2026-06-22T00:46:25.5189630Z         "int": {
2026-06-22T00:46:25.5189743Z           "complete": true,
2026-06-22T00:46:25.5189854Z           "evidence": [
2026-06-22T00:46:25.5189954Z             {
2026-06-22T00:46:25.5190096Z               "path": "crates/spt-daemon/tests/handoff.rs",
2026-06-22T00:46:25.5190202Z               "line": 18
2026-06-22T00:46:25.5190293Z             }
2026-06-22T00:46:25.5190392Z           ]
2026-06-22T00:46:25.5190493Z         },
2026-06-22T00:46:25.5190602Z         "unit": {
2026-06-22T00:46:25.5190707Z           "complete": false,
2026-06-22T00:46:25.5190808Z           "evidence": []
2026-06-22T00:46:25.5190916Z         }
2026-06-22T00:46:25.5191127Z       }
2026-06-22T00:46:25.5191231Z     },
2026-06-22T00:46:25.5191341Z     {
2026-06-22T00:46:25.5191481Z       "id": "REQ-HAZARD-GRACE-BEFORE-SIGNOFF",
2026-06-22T00:46:25.5191788Z       "title": "Grace-period wait completes before composing INIT_SIGNOFF (1.1)",
2026-06-22T00:46:25.5191905Z       "requiredStages": [
2026-06-22T00:46:25.5192014Z         "impl",
2026-06-22T00:46:25.5192115Z         "unit"
2026-06-22T00:46:25.5192215Z       ],
2026-06-22T00:46:25.5192315Z       "stages": {
2026-06-22T00:46:25.5192426Z         "doc": {
2026-06-22T00:46:25.5192535Z           "complete": false,
2026-06-22T00:46:25.5192644Z           "evidence": []
2026-06-22T00:46:25.5192750Z         },
2026-06-22T00:46:25.5192854Z         "impl": {
2026-06-22T00:46:25.5192973Z           "complete": true,
2026-06-22T00:46:25.5193074Z           "evidence": [
2026-06-22T00:46:25.5193178Z             {
2026-06-22T00:46:25.5193326Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T00:46:25.5193431Z               "line": 465
2026-06-22T00:46:25.5193536Z             },
2026-06-22T00:46:25.5193636Z             {
2026-06-22T00:46:25.5193793Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T00:46:25.5193898Z               "line": 27
2026-06-22T00:46:25.5193999Z             }
2026-06-22T00:46:25.5194098Z           ]
2026-06-22T00:46:25.5194208Z         },
2026-06-22T00:46:25.5194314Z         "int": {
2026-06-22T00:46:25.5194418Z           "complete": false,
2026-06-22T00:46:25.5194531Z           "evidence": []
2026-06-22T00:46:25.5194631Z         },
2026-06-22T00:46:25.5194737Z         "unit": {
2026-06-22T00:46:25.5194841Z           "complete": true,
2026-06-22T00:46:25.5194946Z           "evidence": [
2026-06-22T00:46:25.5195056Z             {
2026-06-22T00:46:25.5195198Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T00:46:25.5195309Z               "line": 990
2026-06-22T00:46:25.5195409Z             },
2026-06-22T00:46:25.5195518Z             {
2026-06-22T00:46:25.5195662Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T00:46:25.5195781Z               "line": 181
2026-06-22T00:46:25.5195891Z             }
2026-06-22T00:46:25.5195991Z           ]
2026-06-22T00:46:25.5196100Z         }
2026-06-22T00:46:25.5196201Z       }
2026-06-22T00:46:25.5196296Z     },
2026-06-22T00:46:25.5196391Z     {
2026-06-22T00:46:25.5196525Z       "id": "REQ-HAZARD-HANDOFF-ARGV-COMPAT",
2026-06-22T00:46:25.5196720Z       "title": "Broker/brain IPC + handoff argv version-tolerant (2.3)",
2026-06-22T00:46:25.5196824Z       "requiredStages": [
2026-06-22T00:46:25.5196933Z         "impl",
2026-06-22T00:46:25.5197036Z         "unit"
2026-06-22T00:46:25.5197145Z       ],
2026-06-22T00:46:25.5197246Z       "stages": {
2026-06-22T00:46:25.5197351Z         "doc": {
2026-06-22T00:46:25.5197470Z           "complete": false,
2026-06-22T00:46:25.5197576Z           "evidence": []
2026-06-22T00:46:25.5197680Z         },
2026-06-22T00:46:25.5197784Z         "impl": {
2026-06-22T00:46:25.5197900Z           "complete": true,
2026-06-22T00:46:25.5198013Z           "evidence": [
2026-06-22T00:46:25.5198109Z             {
2026-06-22T00:46:25.5198262Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.5198371Z               "line": 73
2026-06-22T00:46:25.5198472Z             },
2026-06-22T00:46:25.5198567Z             {
2026-06-22T00:46:25.5198709Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.5198811Z               "line": 972
2026-06-22T00:46:25.5198915Z             },
2026-06-22T00:46:25.5199097Z             {
2026-06-22T00:46:25.5199244Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T00:46:25.5199353Z               "line": 20
2026-06-22T00:46:25.5199459Z             },
2026-06-22T00:46:25.5199563Z             {
2026-06-22T00:46:25.5199691Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T00:46:25.5199796Z               "line": 100
2026-06-22T00:46:25.5199908Z             },
2026-06-22T00:46:25.5200013Z             {
2026-06-22T00:46:25.5200247Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T00:46:25.5200351Z               "line": 619
2026-06-22T00:46:25.5200552Z             },
2026-06-22T00:46:25.5200656Z             {
2026-06-22T00:46:25.5200796Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-22T00:46:25.5200909Z               "line": 68
2026-06-22T00:46:25.5201009Z             },
2026-06-22T00:46:25.5201111Z             {
2026-06-22T00:46:25.5201247Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-22T00:46:25.5201358Z               "line": 80
2026-06-22T00:46:25.5201463Z             }
2026-06-22T00:46:25.5201548Z           ]
2026-06-22T00:46:25.5201654Z         },
2026-06-22T00:46:25.5201759Z         "int": {
2026-06-22T00:46:25.5201868Z           "complete": true,
2026-06-22T00:46:25.5201969Z           "evidence": [
2026-06-22T00:46:25.5202074Z             {
2026-06-22T00:46:25.5202210Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-22T00:46:25.5202319Z               "line": 44
2026-06-22T00:46:25.5202428Z             }
2026-06-22T00:46:25.5202522Z           ]
2026-06-22T00:46:25.5202632Z         },
2026-06-22T00:46:25.5202733Z         "unit": {
2026-06-22T00:46:25.5202846Z           "complete": true,
2026-06-22T00:46:25.5202952Z           "evidence": [
2026-06-22T00:46:25.5203052Z             {
2026-06-22T00:46:25.5203199Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.5203305Z               "line": 1181
2026-06-22T00:46:25.5203405Z             },
2026-06-22T00:46:25.5203504Z             {
2026-06-22T00:46:25.5203649Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.5203758Z               "line": 1197
2026-06-22T00:46:25.5203857Z             },
2026-06-22T00:46:25.5203964Z             {
2026-06-22T00:46:25.5204096Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.5204206Z               "line": 2695
2026-06-22T00:46:25.5204306Z             },
2026-06-22T00:46:25.5204411Z             {
2026-06-22T00:46:25.5204555Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T00:46:25.5204663Z               "line": 152
2026-06-22T00:46:25.5204768Z             },
2026-06-22T00:46:25.5204869Z             {
2026-06-22T00:46:25.5204997Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T00:46:25.5205105Z               "line": 175
2026-06-22T00:46:25.5205211Z             },
2026-06-22T00:46:25.5205316Z             {
2026-06-22T00:46:25.5205448Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T00:46:25.5205559Z               "line": 186
2026-06-22T00:46:25.5205659Z             },
2026-06-22T00:46:25.5205768Z             {
2026-06-22T00:46:25.5205893Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T00:46:25.5206007Z               "line": 202
2026-06-22T00:46:25.5206112Z             },
2026-06-22T00:46:25.5206212Z             {
2026-06-22T00:46:25.5206355Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T00:46:25.5206470Z               "line": 216
2026-06-22T00:46:25.5206575Z             },
2026-06-22T00:46:25.5206679Z             {
2026-06-22T00:46:25.5206833Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-22T00:46:25.5206932Z               "line": 137
2026-06-22T00:46:25.5207032Z             },
2026-06-22T00:46:25.5207139Z             {
2026-06-22T00:46:25.5207265Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5207370Z               "line": 8152
2026-06-22T00:46:25.5207475Z             },
2026-06-22T00:46:25.5207582Z             {
2026-06-22T00:46:25.5207729Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-22T00:46:25.5207840Z               "line": 30
2026-06-22T00:46:25.5207954Z             },
2026-06-22T00:46:25.5208049Z             {
2026-06-22T00:46:25.5208193Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-22T00:46:25.5208297Z               "line": 73
2026-06-22T00:46:25.5208393Z             }
2026-06-22T00:46:25.5208573Z           ]
2026-06-22T00:46:25.5208679Z         }
2026-06-22T00:46:25.5208784Z       }
2026-06-22T00:46:25.5209027Z     },
2026-06-22T00:46:25.5209132Z     {
2026-06-22T00:46:25.5209274Z       "id": "REQ-HAZARD-HOSTED-LIVENESS-RECONCILE",
2026-06-22T00:46:25.5213235Z       "title": "B2 KEYSTONE: a daemon-hosted (spt-hosted) endpoint's info.json status is RECONCILED to real liveness, not left latched online. The broker exit-waiter (broker.rs:889-910) reaps its in-mem session table + emits ExitEvent but NEVER touches info.json; lifecycle::mark_offline only fires on Psyche teardown — so a dead/exited harness (operator closed the tab) stays status=online forever (is_perch_alive returns ONLINE for daemon-hosted, liveness.rs:80-93). FIX (doyle ruled PULL-PRIMARY — the live-status analog of REQ-HAZARD-ROSTER-GHOST): the livehost reconcile loop (reconcile_once livehost.rs:226-313) queries the broker's live session set (KIND_SESSIONS) each tick and, for any status=online live_agent perch PAST the boot grace whose endpoint has NO live broker session, marks it offline (lifecycle::mark_offline → status=offline → is_perch_alive=false). GATED on spt-hosted (controllable==Some(true)) so a HARNESS-HOSTED relay live agent (api listen, legitimately online with no broker session) is NEVER mis-marked. Crash-robust + self-healing on the next tick (clear-on-event is not crash-robust alone). PUSH (brain ExitEvent→mark_offline) is an OPTIONAL fast-path only if the daemon brain is reliably subscribed to all hosted sessions; correctness rides the pull. Broker stays stateless (ADR-0004 §B — brain owns the info.json write). (v0.12.0)",
2026-06-22T00:46:25.5213392Z       "requiredStages": [
2026-06-22T00:46:25.5213497Z         "impl",
2026-06-22T00:46:25.5213598Z         "unit",
2026-06-22T00:46:25.5213702Z         "int"
2026-06-22T00:46:25.5213807Z       ],
2026-06-22T00:46:25.5213908Z       "stages": {
2026-06-22T00:46:25.5214012Z         "doc": {
2026-06-22T00:46:25.5214137Z           "complete": false,
2026-06-22T00:46:25.5214237Z           "evidence": []
2026-06-22T00:46:25.5214337Z         },
2026-06-22T00:46:25.5214441Z         "impl": {
2026-06-22T00:46:25.5214552Z           "complete": true,
2026-06-22T00:46:25.5214661Z           "evidence": [
2026-06-22T00:46:25.5214766Z             {
2026-06-22T00:46:25.5214923Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.5215033Z               "line": 510
2026-06-22T00:46:25.5215139Z             },
2026-06-22T00:46:25.5215247Z             {
2026-06-22T00:46:25.5215391Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.5215501Z               "line": 704
2026-06-22T00:46:25.5215594Z             }
2026-06-22T00:46:25.5215703Z           ]
2026-06-22T00:46:25.5215795Z         },
2026-06-22T00:46:25.5215900Z         "int": {
2026-06-22T00:46:25.5216004Z           "complete": true,
2026-06-22T00:46:25.5216120Z           "evidence": [
2026-06-22T00:46:25.5216224Z             {
2026-06-22T00:46:25.5216367Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.5216491Z               "line": 1119
2026-06-22T00:46:25.5216595Z             },
2026-06-22T00:46:25.5216710Z             {
2026-06-22T00:46:25.5216863Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-22T00:46:25.5216977Z               "line": 312
2026-06-22T00:46:25.5217079Z             }
2026-06-22T00:46:25.5217192Z           ]
2026-06-22T00:46:25.5217296Z         },
2026-06-22T00:46:25.5217403Z         "unit": {
2026-06-22T00:46:25.5217516Z           "complete": true,
2026-06-22T00:46:25.5217626Z           "evidence": [
2026-06-22T00:46:25.5217732Z             {
2026-06-22T00:46:25.5217873Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.5217977Z               "line": 821
2026-06-22T00:46:25.5218091Z             }
2026-06-22T00:46:25.5218185Z           ]
2026-06-22T00:46:25.5218294Z         }
2026-06-22T00:46:25.5218396Z       }
2026-06-22T00:46:25.5218505Z     },
2026-06-22T00:46:25.5218600Z     {
2026-06-22T00:46:25.5218852Z       "id": "REQ-HAZARD-ID-CHARSET",
2026-06-22T00:46:25.5219200Z       "title": "Addressable-id charset reserves :/@ delimiters; validated at every creation seam (4.6)",
2026-06-22T00:46:25.5219415Z       "requiredStages": [
2026-06-22T00:46:25.5219524Z         "impl",
2026-06-22T00:46:25.5219626Z         "unit"
2026-06-22T00:46:25.5219730Z       ],
2026-06-22T00:46:25.5219830Z       "stages": {
2026-06-22T00:46:25.5219941Z         "doc": {
2026-06-22T00:46:25.5220059Z           "complete": true,
2026-06-22T00:46:25.5220168Z           "evidence": [
2026-06-22T00:46:25.5220279Z             {
2026-06-22T00:46:25.5220416Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T00:46:25.5220522Z               "line": 133
2026-06-22T00:46:25.5220627Z             }
2026-06-22T00:46:25.5220731Z           ]
2026-06-22T00:46:25.5220840Z         },
2026-06-22T00:46:25.5220935Z         "impl": {
2026-06-22T00:46:25.5221052Z           "complete": true,
2026-06-22T00:46:25.5221157Z           "evidence": [
2026-06-22T00:46:25.5221272Z             {
2026-06-22T00:46:25.5221395Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T00:46:25.5221515Z               "line": 65
2026-06-22T00:46:25.5221625Z             },
2026-06-22T00:46:25.5221720Z             {
2026-06-22T00:46:25.5221863Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T00:46:25.5221963Z               "line": 17
2026-06-22T00:46:25.5222072Z             },
2026-06-22T00:46:25.5222178Z             {
2026-06-22T00:46:25.5222321Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T00:46:25.5222430Z               "line": 146
2026-06-22T00:46:25.5222536Z             },
2026-06-22T00:46:25.5222634Z             {
2026-06-22T00:46:25.5222774Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.5222889Z               "line": 310
2026-06-22T00:46:25.5222993Z             },
2026-06-22T00:46:25.5223089Z             {
2026-06-22T00:46:25.5223232Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.5223340Z               "line": 441
2026-06-22T00:46:25.5223445Z             },
2026-06-22T00:46:25.5223553Z             {
2026-06-22T00:46:25.5223690Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T00:46:25.5223795Z               "line": 32
2026-06-22T00:46:25.5223901Z             },
2026-06-22T00:46:25.5224005Z             {
2026-06-22T00:46:25.5224135Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5224253Z               "line": 1283
2026-06-22T00:46:25.5224348Z             },
2026-06-22T00:46:25.5224449Z             {
2026-06-22T00:46:25.5224577Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5224687Z               "line": 6161
2026-06-22T00:46:25.5224792Z             },
2026-06-22T00:46:25.5224892Z             {
2026-06-22T00:46:25.5225026Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5225136Z               "line": 6443
2026-06-22T00:46:25.5225240Z             }
2026-06-22T00:46:25.5225351Z           ]
2026-06-22T00:46:25.5225455Z         },
2026-06-22T00:46:25.5225564Z         "int": {
2026-06-22T00:46:25.5225675Z           "complete": false,
2026-06-22T00:46:25.5225798Z           "evidence": []
2026-06-22T00:46:25.5225903Z         },
2026-06-22T00:46:25.5226014Z         "unit": {
2026-06-22T00:46:25.5226127Z           "complete": true,
2026-06-22T00:46:25.5226235Z           "evidence": [
2026-06-22T00:46:25.5226345Z             {
2026-06-22T00:46:25.5226479Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T00:46:25.5226593Z               "line": 94
2026-06-22T00:46:25.5226690Z             },
2026-06-22T00:46:25.5226794Z             {
2026-06-22T00:46:25.5226927Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T00:46:25.5227037Z               "line": 111
2026-06-22T00:46:25.5227184Z             },
2026-06-22T00:46:25.5227309Z             {
2026-06-22T00:46:25.5227442Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T00:46:25.5227546Z               "line": 124
2026-06-22T00:46:25.5227762Z             },
2026-06-22T00:46:25.5227871Z             {
2026-06-22T00:46:25.5227996Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T00:46:25.5228181Z               "line": 134
2026-06-22T00:46:25.5228283Z             },
2026-06-22T00:46:25.5228395Z             {
2026-06-22T00:46:25.5228538Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T00:46:25.5228646Z               "line": 144
2026-06-22T00:46:25.5228755Z             },
2026-06-22T00:46:25.5228859Z             {
2026-06-22T00:46:25.5229065Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T00:46:25.5229174Z               "line": 156
2026-06-22T00:46:25.5229280Z             },
2026-06-22T00:46:25.5229384Z             {
2026-06-22T00:46:25.5229547Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T00:46:25.5229656Z               "line": 746
2026-06-22T00:46:25.5229756Z             },
2026-06-22T00:46:25.5229852Z             {
2026-06-22T00:46:25.5230004Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T00:46:25.5230113Z               "line": 309
2026-06-22T00:46:25.5230224Z             }
2026-06-22T00:46:25.5230323Z           ]
2026-06-22T00:46:25.5230433Z         }
2026-06-22T00:46:25.5230534Z       }
2026-06-22T00:46:25.5230638Z     },
2026-06-22T00:46:25.5230738Z     {
2026-06-22T00:46:25.5230877Z       "id": "REQ-HAZARD-INBOX-NO-DOUBLE",
2026-06-22T00:46:25.5231034Z       "title": "No double-delivery via legacy inbox (4.5)",
2026-06-22T00:46:25.5231145Z       "requiredStages": [
2026-06-22T00:46:25.5231253Z         "impl",
2026-06-22T00:46:25.5231361Z         "unit"
2026-06-22T00:46:25.5231462Z       ],
2026-06-22T00:46:25.5231560Z       "stages": {
2026-06-22T00:46:25.5231669Z         "doc": {
2026-06-22T00:46:25.5231775Z           "complete": false,
2026-06-22T00:46:25.5231885Z           "evidence": []
2026-06-22T00:46:25.5231998Z         },
2026-06-22T00:46:25.5232104Z         "impl": {
2026-06-22T00:46:25.5232223Z           "complete": true,
2026-06-22T00:46:25.5232327Z           "evidence": [
2026-06-22T00:46:25.5232433Z             {
2026-06-22T00:46:25.5232571Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T00:46:25.5232681Z               "line": 128
2026-06-22T00:46:25.5232786Z             }
2026-06-22T00:46:25.5232886Z           ]
2026-06-22T00:46:25.5232990Z         },
2026-06-22T00:46:25.5233096Z         "int": {
2026-06-22T00:46:25.5233209Z           "complete": false,
2026-06-22T00:46:25.5233315Z           "evidence": []
2026-06-22T00:46:25.5233425Z         },
2026-06-22T00:46:25.5233533Z         "unit": {
2026-06-22T00:46:25.5233644Z           "complete": true,
2026-06-22T00:46:25.5233744Z           "evidence": [
2026-06-22T00:46:25.5233843Z             {
2026-06-22T00:46:25.5233986Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T00:46:25.5234095Z               "line": 205
2026-06-22T00:46:25.5234198Z             }
2026-06-22T00:46:25.5234298Z           ]
2026-06-22T00:46:25.5234399Z         }
2026-06-22T00:46:25.5234513Z       }
2026-06-22T00:46:25.5234612Z     },
2026-06-22T00:46:25.5234723Z     {
2026-06-22T00:46:25.5234860Z       "id": "REQ-HAZARD-INFO-JSON-TORN-READ",
2026-06-22T00:46:25.5235038Z       "title": "State-file reads tolerate concurrent writes (1.2)",
2026-06-22T00:46:25.5235156Z       "requiredStages": [
2026-06-22T00:46:25.5235252Z         "impl",
2026-06-22T00:46:25.5235352Z         "unit"
2026-06-22T00:46:25.5235453Z       ],
2026-06-22T00:46:25.5235552Z       "stages": {
2026-06-22T00:46:25.5235658Z         "doc": {
2026-06-22T00:46:25.5235782Z           "complete": false,
2026-06-22T00:46:25.5235896Z           "evidence": []
2026-06-22T00:46:25.5235996Z         },
2026-06-22T00:46:25.5236106Z         "impl": {
2026-06-22T00:46:25.5236221Z           "complete": true,
2026-06-22T00:46:25.5236325Z           "evidence": [
2026-06-22T00:46:25.5236430Z             {
2026-06-22T00:46:25.5236564Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T00:46:25.5236781Z               "line": 367
2026-06-22T00:46:25.5236886Z             },
2026-06-22T00:46:25.5236997Z             {
2026-06-22T00:46:25.5237215Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T00:46:25.5237326Z               "line": 378
2026-06-22T00:46:25.5237429Z             },
2026-06-22T00:46:25.5237531Z             {
2026-06-22T00:46:25.5237660Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T00:46:25.5237773Z               "line": 396
2026-06-22T00:46:25.5237879Z             }
2026-06-22T00:46:25.5237983Z           ]
2026-06-22T00:46:25.5238093Z         },
2026-06-22T00:46:25.5238199Z         "int": {
2026-06-22T00:46:25.5238317Z           "complete": false,
2026-06-22T00:46:25.5238417Z           "evidence": []
2026-06-22T00:46:25.5238518Z         },
2026-06-22T00:46:25.5238626Z         "unit": {
2026-06-22T00:46:25.5238732Z           "complete": true,
2026-06-22T00:46:25.5238843Z           "evidence": [
2026-06-22T00:46:25.5239031Z             {
2026-06-22T00:46:25.5239174Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T00:46:25.5239296Z               "line": 420
2026-06-22T00:46:25.5239405Z             },
2026-06-22T00:46:25.5239511Z             {
2026-06-22T00:46:25.5239648Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T00:46:25.5239763Z               "line": 441
2026-06-22T00:46:25.5239863Z             },
2026-06-22T00:46:25.5239968Z             {
2026-06-22T00:46:25.5240107Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T00:46:25.5240217Z               "line": 811
2026-06-22T00:46:25.5240321Z             },
2026-06-22T00:46:25.5240417Z             {
2026-06-22T00:46:25.5240545Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T00:46:25.5240669Z               "line": 822
2026-06-22T00:46:25.5240775Z             },
2026-06-22T00:46:25.5240884Z             {
2026-06-22T00:46:25.5241013Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T00:46:25.5241127Z               "line": 835
2026-06-22T00:46:25.5241222Z             }
2026-06-22T00:46:25.5241323Z           ]
2026-06-22T00:46:25.5241423Z         }
2026-06-22T00:46:25.5241532Z       }
2026-06-22T00:46:25.5241648Z     },
2026-06-22T00:46:25.5241743Z     {
2026-06-22T00:46:25.5241889Z       "id": "REQ-HAZARD-INJECT-CONTROL-COEXIST",
2026-06-22T00:46:25.5249287Z       "title": "SPINE INVARIANT (v0.13.0 keystone): the broker must accept INJECTED keystrokes into an spt-hosted PTY (the v0.11.0 raw direct-inject today; the ADR-0022 translation-binary choreography tomorrow) WHILE a live `spt rc` controller is attached to the SAME PTY, without (a) the operator losing control, (b) the endpoint latching ONLINE+CONTROLLED, or (c) the broker wedging. The injection inlet is PERMANENT — spt-claude-code requires keystroke injection — so this is root-caused + fixed at the PTY-injection layer, IN STEP with the ADR-0022 delivery redesign that formalizes the inlet. REOPENS the wedge facet of REQ-HAZARD-ATTACH-WEDGE: the v0.12.1 prove-don't-change covered only DEAD-CHILD backpressure, NOT the injection trigger (operator's signal — one injected keystroke succeeds, the next wedges → the single-threaded broker parks on a blocking PTY/loopback write after injection-induced harness output). REPRO-FIRST on the real dummy-harness fixture (NO theory): instrument to nail the exact blocking call before any fix. Fix candidates: non-blocking/fail-fast PTY write, split input/output, bounded-evicting. Mechanism shared with W2 — spt-core owns EVERY PTY write and applies an injected sequence ATOMICALLY (controller input buffered during the sequence, flushed after) so a stash/restore can't be clobbered. CONFIRMED ROOT (doyle /diagnose 2026-06-19, code-grounded): Broker::append (broker.rs:205-227) fans each live output chunk to the CONTROLLER on a SYNCHRONOUS BLOCKING write_frame held inline in the session's drain thread (the 'authoritative, advances delivered_through' path, D4-1), while VIEWERS use a dedicated writer thread + bounded evicting sync_channel (add_viewer:273 / viewer_writer) that can never stall the drain. So a slow/backed-up controller socket — or the full 64KB loopback duplex (the ATTACH-WEDGE buffer) — BLOCKS the drain thread → output stalls → keystroke echoes stall (PERCEIVED input lag) → unrecoverable wedge when the consumer never drains. TRIGGERS ON NORMAL INTERACTIVE rc USE under heavy harness output (TUI redraw), NOT only message injection — same root, wider repro. FIX DIRECTION: move controller delivery off the drain thread onto a dedicated writer (the viewer_writer pattern) BUT preserve the authoritative cursor — block the WRITER thread (not the drain), bound the wedge (deadline → detach/mark-gone, never park forever), never silently evict the operator's authoritative view. (v0.13.0)",
2026-06-22T00:46:25.5249729Z       "requiredStages": [
2026-06-22T00:46:25.5249832Z         "impl",
2026-06-22T00:46:25.5249941Z         "unit",
2026-06-22T00:46:25.5250037Z         "int"
2026-06-22T00:46:25.5250142Z       ],
2026-06-22T00:46:25.5250247Z       "stages": {
2026-06-22T00:46:25.5250362Z         "doc": {
2026-06-22T00:46:25.5250476Z           "complete": false,
2026-06-22T00:46:25.5250585Z           "evidence": []
2026-06-22T00:46:25.5250696Z         },
2026-06-22T00:46:25.5250800Z         "impl": {
2026-06-22T00:46:25.5250919Z           "complete": true,
2026-06-22T00:46:25.5251034Z           "evidence": [
2026-06-22T00:46:25.5251124Z             {
2026-06-22T00:46:25.5251282Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.5251391Z               "line": 375
2026-06-22T00:46:25.5251501Z             },
2026-06-22T00:46:25.5251602Z             {
2026-06-22T00:46:25.5251753Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.5251859Z               "line": 846
2026-06-22T00:46:25.5251965Z             },
2026-06-22T00:46:25.5252068Z             {
2026-06-22T00:46:25.5252208Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.5252312Z               "line": 1121
2026-06-22T00:46:25.5252411Z             }
2026-06-22T00:46:25.5252515Z           ]
2026-06-22T00:46:25.5252616Z         },
2026-06-22T00:46:25.5252723Z         "int": {
2026-06-22T00:46:25.5252837Z           "complete": true,
2026-06-22T00:46:25.5252948Z           "evidence": [
2026-06-22T00:46:25.5253047Z             {
2026-06-22T00:46:25.5253220Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T00:46:25.5253329Z               "line": 256
2026-06-22T00:46:25.5253443Z             },
2026-06-22T00:46:25.5253544Z             {
2026-06-22T00:46:25.5253719Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T00:46:25.5253829Z               "line": 382
2026-06-22T00:46:25.5253929Z             }
2026-06-22T00:46:25.5254034Z           ]
2026-06-22T00:46:25.5254144Z         },
2026-06-22T00:46:25.5254254Z         "unit": {
2026-06-22T00:46:25.5254353Z           "complete": true,
2026-06-22T00:46:25.5254469Z           "evidence": [
2026-06-22T00:46:25.5254573Z             {
2026-06-22T00:46:25.5254726Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.5254837Z               "line": 2822
2026-06-22T00:46:25.5254949Z             }
2026-06-22T00:46:25.5255058Z           ]
2026-06-22T00:46:25.5255159Z         }
2026-06-22T00:46:25.5255257Z       }
2026-06-22T00:46:25.5255356Z     },
2026-06-22T00:46:25.5255457Z     {
2026-06-22T00:46:25.5255624Z       "id": "REQ-HAZARD-INPUT-ACK-BACKPRESSURE",
2026-06-22T00:46:25.5262777Z       "title": "A FLOOD of operator input on one brain↔broker connection deadlocks the broker PERMANENTLY (entire broker — no new/existing attach; the controller stays latched because the per-conn handler can't process the detach). ROOT (doyle /diagnose, code-grounded + HITL capture, the v0.13.0 P1 ctrl+V re-open): `serve_attach` processes a whole `NetStreamData` batch of N operator `Input` records in its inner `for rec in decoder.push()` loop, calling `brain.send_effect(op_id, &bytes)` N times WITHOUT returning to `read_event()` — so the brain writes N `KIND_INPUT` frames back-to-back and drains nothing. The broker's single-threaded per-conn handler answers EACH with `send_frame(applied_envelope)` on the SAME conn (B5 exactly-once ack, KNOWN-HAZARDS 7.2). With the brain not reading, the broker→brain return direction fills (~10 frames = the IPC pipe buffer) → `send_frame` BLOCKS → the handler stops reading → the brain's writes block too → mutual full-duplex DEADLOCK. Capture pinned it: 11 input frames, write_input 11/11 (P0 holds — the PTY write is fine), ack send START=11 / END=10 (frame #11's applied-ack never returns). Same class as the v0.12.1 L0 two-conn split. Windows Terminal's ctrl+V paste accelerator was the trigger (injects the clipboard as a char-by-char key flood) but the deadlock is generic to ANY input flood, NOT ctrl+V-specific and NOT a P0 (PTY-write) or W1 (output-drain) regression. The applied-ack is load-bearing ONLY for `shellchan` (one-at-a-time spool delivery WAITS on `BrokerEvent::Applied`); `serve_attach` DISCARDS it (the operator/rc path is fire-and-forward, op_id for dedup only, never gates on the ack). FIX (doyle-approved): CONDITIONAL ACK — `InputReq` gains `ack: bool` (serde default = true, N-1-safe: an older brain's input still acks = today's behavior). `serve_attach`'s operator path calls `send_effect_no_ack` (ack=false) → `dispatch_input` writes NO applied frame → the per-conn handler never writes back while servicing the flood → it always drains → no deadlock (cures ANY input flood). `shellchan` keeps `send_effect` (ack=true) and its `Applied`-wait. Exactly-once PRESERVED: the broker still dedups by (session, op_id) at the applied-set regardless of the ack. N-1 caveat: an OLD resident broker (self-update window) ignores `ack=false` → still acks → the deadlock persists until a broker restart (inherent KNOWN-HAZARDS 7.9 broker-resident-wire-change class). (v0.13.0)",
2026-06-22T00:46:25.5263190Z       "requiredStages": [
2026-06-22T00:46:25.5263297Z         "doc",
2026-06-22T00:46:25.5263402Z         "impl",
2026-06-22T00:46:25.5263517Z         "unit",
2026-06-22T00:46:25.5263621Z         "int"
2026-06-22T00:46:25.5263726Z       ],
2026-06-22T00:46:25.5263841Z       "stages": {
2026-06-22T00:46:25.5263955Z         "doc": {
2026-06-22T00:46:25.5266908Z           "complete": true,
2026-06-22T00:46:25.5267042Z           "evidence": [
2026-06-22T00:46:25.5267151Z             {
2026-06-22T00:46:25.5267291Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T00:46:25.5267399Z               "line": 454
2026-06-22T00:46:25.5267500Z             }
2026-06-22T00:46:25.5267601Z           ]
2026-06-22T00:46:25.5267704Z         },
2026-06-22T00:46:25.5267814Z         "impl": {
2026-06-22T00:46:25.5267920Z           "complete": true,
2026-06-22T00:46:25.5268024Z           "evidence": [
2026-06-22T00:46:25.5268124Z             {
2026-06-22T00:46:25.5268274Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T00:46:25.5268381Z               "line": 355
2026-06-22T00:46:25.5268480Z             },
2026-06-22T00:46:25.5268586Z             {
2026-06-22T00:46:25.5268739Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T00:46:25.5268848Z               "line": 493
2026-06-22T00:46:25.5269030Z             },
2026-06-22T00:46:25.5269124Z             {
2026-06-22T00:46:25.5269268Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.5269391Z               "line": 1930
2026-06-22T00:46:25.5269496Z             },
2026-06-22T00:46:25.5269597Z             {
2026-06-22T00:46:25.5269740Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T00:46:25.5269836Z               "line": 347
2026-06-22T00:46:25.5269940Z             }
2026-06-22T00:46:25.5270040Z           ]
2026-06-22T00:46:25.5270151Z         },
2026-06-22T00:46:25.5270255Z         "int": {
2026-06-22T00:46:25.5270369Z           "complete": true,
2026-06-22T00:46:25.5270470Z           "evidence": [
2026-06-22T00:46:25.5270575Z             {
2026-06-22T00:46:25.5270721Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T00:46:25.5270962Z               "line": 737
2026-06-22T00:46:25.5271071Z             },
2026-06-22T00:46:25.5271172Z             {
2026-06-22T00:46:25.5271405Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T00:46:25.5271511Z               "line": 854
2026-06-22T00:46:25.5271615Z             },
2026-06-22T00:46:25.5271710Z             {
2026-06-22T00:46:25.5271887Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T00:46:25.5272005Z               "line": 544
2026-06-22T00:46:25.5272102Z             },
2026-06-22T00:46:25.5272206Z             {
2026-06-22T00:46:25.5272383Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T00:46:25.5272488Z               "line": 1830
2026-06-22T00:46:25.5272597Z             },
2026-06-22T00:46:25.5272703Z             {
2026-06-22T00:46:25.5272864Z               "path": "crates/spt-daemon/tests/input_ack_deadlock.rs",
2026-06-22T00:46:25.5272974Z               "line": 266
2026-06-22T00:46:25.5273080Z             }
2026-06-22T00:46:25.5273188Z           ]
2026-06-22T00:46:25.5273289Z         },
2026-06-22T00:46:25.5273409Z         "unit": {
2026-06-22T00:46:25.5273517Z           "complete": true,
2026-06-22T00:46:25.5273630Z           "evidence": [
2026-06-22T00:46:25.5273736Z             {
2026-06-22T00:46:25.5273867Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T00:46:25.5273977Z               "line": 1046
2026-06-22T00:46:25.5274082Z             },
2026-06-22T00:46:25.5274186Z             {
2026-06-22T00:46:25.5274320Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T00:46:25.5274430Z               "line": 1080
2026-06-22T00:46:25.5274529Z             }
2026-06-22T00:46:25.5274631Z           ]
2026-06-22T00:46:25.5274735Z         }
2026-06-22T00:46:25.5274839Z       }
2026-06-22T00:46:25.5274935Z     },
2026-06-22T00:46:25.5275036Z     {
2026-06-22T00:46:25.5275159Z       "id": "REQ-HAZARD-INSTANT-UNDERFLOW",
2026-06-22T00:46:25.5275779Z       "title": "Scheduling never subtracts a Duration from Instant::now() (underflow-panics on a host booted more recently than the offset); 'due now / never run' is Option<Instant>=None gated on forward duration_since only (5.9)",
2026-06-22T00:46:25.5275909Z       "requiredStages": [
2026-06-22T00:46:25.5276018Z         "impl",
2026-06-22T00:46:25.5276126Z         "unit"
2026-06-22T00:46:25.5276231Z       ],
2026-06-22T00:46:25.5276349Z       "stages": {
2026-06-22T00:46:25.5276448Z         "doc": {
2026-06-22T00:46:25.5276562Z           "complete": false,
2026-06-22T00:46:25.5276678Z           "evidence": []
2026-06-22T00:46:25.5276782Z         },
2026-06-22T00:46:25.5276887Z         "impl": {
2026-06-22T00:46:25.5276997Z           "complete": true,
2026-06-22T00:46:25.5277115Z           "evidence": [
2026-06-22T00:46:25.5277217Z             {
2026-06-22T00:46:25.5277373Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T00:46:25.5277478Z               "line": 759
2026-06-22T00:46:25.5277588Z             }
2026-06-22T00:46:25.5277693Z           ]
2026-06-22T00:46:25.5277802Z         },
2026-06-22T00:46:25.5277908Z         "int": {
2026-06-22T00:46:25.5278026Z           "complete": false,
2026-06-22T00:46:25.5278132Z           "evidence": []
2026-06-22T00:46:25.5278232Z         },
2026-06-22T00:46:25.5278336Z         "unit": {
2026-06-22T00:46:25.5278447Z           "complete": true,
2026-06-22T00:46:25.5278552Z           "evidence": [
2026-06-22T00:46:25.5278656Z             {
2026-06-22T00:46:25.5278800Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T00:46:25.5278899Z               "line": 873
2026-06-22T00:46:25.5279069Z             }
2026-06-22T00:46:25.5279175Z           ]
2026-06-22T00:46:25.5279275Z         }
2026-06-22T00:46:25.5279374Z       }
2026-06-22T00:46:25.5279476Z     },
2026-06-22T00:46:25.5279566Z     {
2026-06-22T00:46:25.5279723Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-LIVENESS-GATE",
2026-06-22T00:46:25.5282095Z       "title": "B5: `spt daemon start` does NOT revive phantom Psyches for dead-but-online-latched perches. Today reconcile_once (livehost.rs:285) spawns a Psyche per status=online live_agent perch at boot WITHOUT verifying the harness child / {id}-psyche is actually alive — so a Cold start after an unclean stop revives N psyches for N dead-but-latched perches (3 psyches for 3 dead perches). FIX: gate the boot psyche-spawn on real child-liveness — a perch with NO live broker session (the B2 reconcile signal) is marked OFFLINE at boot instead of hosted, so a dead-harness perch is never revived. Shares the B2 reconcile loop (this is its boot-gate arm); composes with B2's honest latch. Also closes wall-a's psyche_host_error gap (residency-confirm does not run at boot tick-1, livehost.rs:395-441 / 257-263). (v0.12.0)",
2026-06-22T00:46:25.5282424Z       "requiredStages": [
2026-06-22T00:46:25.5282533Z         "impl",
2026-06-22T00:46:25.5282629Z         "unit",
2026-06-22T00:46:25.5282734Z         "int"
2026-06-22T00:46:25.5282833Z       ],
2026-06-22T00:46:25.5282943Z       "stages": {
2026-06-22T00:46:25.5283053Z         "doc": {
2026-06-22T00:46:25.5283167Z           "complete": false,
2026-06-22T00:46:25.5283263Z           "evidence": []
2026-06-22T00:46:25.5283363Z         },
2026-06-22T00:46:25.5283468Z         "impl": {
2026-06-22T00:46:25.5283573Z           "complete": true,
2026-06-22T00:46:25.5283678Z           "evidence": [
2026-06-22T00:46:25.5283782Z             {
2026-06-22T00:46:25.5283931Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.5284035Z               "line": 705
2026-06-22T00:46:25.5284139Z             }
2026-06-22T00:46:25.5284244Z           ]
2026-06-22T00:46:25.5284347Z         },
2026-06-22T00:46:25.5284455Z         "int": {
2026-06-22T00:46:25.5284561Z           "complete": true,
2026-06-22T00:46:25.5284661Z           "evidence": [
2026-06-22T00:46:25.5284765Z             {
2026-06-22T00:46:25.5284929Z               "path": "crates/spt/tests/livehost_bootgate_e2e.rs",
2026-06-22T00:46:25.5285033Z               "line": 24
2026-06-22T00:46:25.5285142Z             }
2026-06-22T00:46:25.5285243Z           ]
2026-06-22T00:46:25.5285348Z         },
2026-06-22T00:46:25.5285457Z         "unit": {
2026-06-22T00:46:25.5285577Z           "complete": true,
2026-06-22T00:46:25.5285682Z           "evidence": [
2026-06-22T00:46:25.5285791Z             {
2026-06-22T00:46:25.5285935Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.5286048Z               "line": 918
2026-06-22T00:46:25.5286155Z             }
2026-06-22T00:46:25.5286259Z           ]
2026-06-22T00:46:25.5286363Z         }
2026-06-22T00:46:25.5286465Z       }
2026-06-22T00:46:25.5286569Z     },
2026-06-22T00:46:25.5286672Z     {
2026-06-22T00:46:25.5286815Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-RACE",
2026-06-22T00:46:25.5290412Z       "title": "The brain's daemon-hosted Psyche lifecycle surfaces a host-FAILURE on the live perch (harness-diagnosable) and runs net-INDEPENDENTLY. When reconcile_once→host_one→spawn_psyche fails for a state=live_agent+status=online endpoint (e.g. the adapter's psyche binary absent from its install dir, REQ-INSTALL-11), the failure MUST be written to the perch info.json as a CURRENT-STATE field (reason + ts + attempt count; overwritten each 5s retry, CLEARED on successful host) and surfaced by `spt endpoint list`/status — never left as an eprintln on the brain's invisible stderr where a harness reading only perch state is blind. status=online stays authoritative (agent reachable; only the Psyche is missing — brain-restart rehydrate legitimately has online-without-Psyche windows), so this is a SEPARATE psyche-host-health field, never a status de-stamp. Net-independence is a locked-in invariant: spawn_live_host (brainproc.rs:230) reaches the reconcile and hosts the Psyche on a net-less/unpaired/peer-pump-STALLED node, proven by a REAL detached-daemon E2E (real broker→brain-child, real api seed+listen, real install-dir psyche binary). spt-core SURFACES the failure; the adapter owns fixing its packaging.",
2026-06-22T00:46:25.5290680Z       "requiredStages": [
2026-06-22T00:46:25.5290784Z         "impl",
2026-06-22T00:46:25.5290888Z         "unit",
2026-06-22T00:46:25.5291098Z         "int"
2026-06-22T00:46:25.5291199Z       ],
2026-06-22T00:46:25.5291314Z       "stages": {
2026-06-22T00:46:25.5291413Z         "doc": {
2026-06-22T00:46:25.5291523Z           "complete": false,
2026-06-22T00:46:25.5291625Z           "evidence": []
2026-06-22T00:46:25.5291732Z         },
2026-06-22T00:46:25.5291836Z         "impl": {
2026-06-22T00:46:25.5291951Z           "complete": true,
2026-06-22T00:46:25.5292054Z           "evidence": [
2026-06-22T00:46:25.5292158Z             {
2026-06-22T00:46:25.5292302Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.5292411Z               "line": 391
2026-06-22T00:46:25.5292511Z             },
2026-06-22T00:46:25.5292612Z             {
2026-06-22T00:46:25.5292759Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T00:46:25.5292859Z               "line": 343
2026-06-22T00:46:25.5292960Z             },
2026-06-22T00:46:25.5293064Z             {
2026-06-22T00:46:25.5293199Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5293313Z               "line": 1750
2026-06-22T00:46:25.5293422Z             },
2026-06-22T00:46:25.5293523Z             {
2026-06-22T00:46:25.5293656Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5293765Z               "line": 3191
2026-06-22T00:46:25.5293871Z             }
2026-06-22T00:46:25.5293970Z           ]
2026-06-22T00:46:25.5294080Z         },
2026-06-22T00:46:25.5294181Z         "int": {
2026-06-22T00:46:25.5294294Z           "complete": true,
2026-06-22T00:46:25.5294404Z           "evidence": [
2026-06-22T00:46:25.5294506Z             {
2026-06-22T00:46:25.5294661Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-22T00:46:25.5294770Z               "line": 353
2026-06-22T00:46:25.5294879Z             },
2026-06-22T00:46:25.5294987Z             {
2026-06-22T00:46:25.5295154Z               "path": "crates/spt/tests/livehost_psyche_fail_e2e.rs",
2026-06-22T00:46:25.5295260Z               "line": 23
2026-06-22T00:46:25.5295363Z             }
2026-06-22T00:46:25.5295474Z           ]
2026-06-22T00:46:25.5295570Z         },
2026-06-22T00:46:25.5295678Z         "unit": {
2026-06-22T00:46:25.5295789Z           "complete": true,
2026-06-22T00:46:25.5295894Z           "evidence": [
2026-06-22T00:46:25.5296007Z             {
2026-06-22T00:46:25.5296147Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T00:46:25.5296265Z               "line": 743
2026-06-22T00:46:25.5296370Z             },
2026-06-22T00:46:25.5296471Z             {
2026-06-22T00:46:25.5296604Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5296695Z               "line": 7863
2026-06-22T00:46:25.5296805Z             }
2026-06-22T00:46:25.5296909Z           ]
2026-06-22T00:46:25.5297015Z         }
2026-06-22T00:46:25.5297115Z       }
2026-06-22T00:46:25.5297218Z     },
2026-06-22T00:46:25.5297327Z     {
2026-06-22T00:46:25.5297465Z       "id": "REQ-HAZARD-LIVEHOST-NONRESIDENT",
2026-06-22T00:46:25.5300814Z       "title": "A daemon-hosted Psyche that spawns then EXITS IMMEDIATELY is a host failure, surfaced like a spawn failure (closes the v0.8.1 residual masking): the REQ-HAZARD-LIVEHOST-BOOT-RACE signal stamps `psyche_host_error` only when `spawn_psyche` returns Err, NOT when the detached spawn() returns Ok but the child dies within moments (e.g. a bad-argv child exiting 2 — the F-009 case). That leaves the residual 'online + no Psyche + no cause' gap: the nested `{id}-psyche` info.json is written status=online with a real-but-DEAD pid and the PARENT perch carries NO psyche_host_error (perri's F-010: tasklist showed 0 host procs across the window while info.json read online). The host MUST confirm RESIDENCY — a hosted child not alive (or whose `{id}-psyche` perch never re-registers / has a dead pid) within N seconds of spawn is treated as a host failure: stamp the parent perch `psyche_host_error{reason:\"host not resident within <n>s (psyche perch missing/dead pid)\"}` (and do not leave a phantom online nested perch). Closes the last masking gap the v0.8.1 fix left open. perri's F-010 (v0.8.1 dogfood). Sibling of REQ-HAZARD-LIVEHOST-BOOT-RACE.",
2026-06-22T00:46:25.5301168Z       "requiredStages": [
2026-06-22T00:46:25.5301273Z         "impl",
2026-06-22T00:46:25.5301382Z         "unit",
2026-06-22T00:46:25.5301487Z         "int"
2026-06-22T00:46:25.5301592Z       ],
2026-06-22T00:46:25.5301701Z       "stages": {
2026-06-22T00:46:25.5301807Z         "doc": {
2026-06-22T00:46:25.5301912Z           "complete": false,
2026-06-22T00:46:25.5302021Z           "evidence": []
2026-06-22T00:46:25.5302131Z         },
2026-06-22T00:46:25.5302236Z         "impl": {
2026-06-22T00:46:25.5302344Z           "complete": true,
2026-06-22T00:46:25.5302454Z           "evidence": [
2026-06-22T00:46:25.5302553Z             {
2026-06-22T00:46:25.5302709Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.5302829Z               "line": 64
2026-06-22T00:46:25.5302924Z             },
2026-06-22T00:46:25.5303028Z             {
2026-06-22T00:46:25.5303186Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.5303291Z               "line": 78
2026-06-22T00:46:25.5303395Z             },
2026-06-22T00:46:25.5303501Z             {
2026-06-22T00:46:25.5303648Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.5303764Z               "line": 170
2026-06-22T00:46:25.5303863Z             },
2026-06-22T00:46:25.5303953Z             {
2026-06-22T00:46:25.5304093Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.5304201Z               "line": 185
2026-06-22T00:46:25.5304306Z             },
2026-06-22T00:46:25.5304408Z             {
2026-06-22T00:46:25.5304559Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.5304664Z               "line": 195
2026-06-22T00:46:25.5304765Z             },
2026-06-22T00:46:25.5304873Z             {
2026-06-22T00:46:25.5305022Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.5305132Z               "line": 205
2026-06-22T00:46:25.5305235Z             },
2026-06-22T00:46:25.5305340Z             {
2026-06-22T00:46:25.5305486Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.5305594Z               "line": 294
2026-06-22T00:46:25.5305701Z             },
2026-06-22T00:46:25.5305801Z             {
2026-06-22T00:46:25.5305948Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.5306054Z               "line": 308
2026-06-22T00:46:25.5306158Z             },
2026-06-22T00:46:25.5306262Z             {
2026-06-22T00:46:25.5306406Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.5306510Z               "line": 377
2026-06-22T00:46:25.5306611Z             },
2026-06-22T00:46:25.5306716Z             {
2026-06-22T00:46:25.5306859Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.5306974Z               "line": 437
2026-06-22T00:46:25.5307078Z             },
2026-06-22T00:46:25.5307183Z             {
2026-06-22T00:46:25.5307317Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.5307421Z               "line": 455
2026-06-22T00:46:25.5307521Z             }
2026-06-22T00:46:25.5307623Z           ]
2026-06-22T00:46:25.5307731Z         },
2026-06-22T00:46:25.5307840Z         "int": {
2026-06-22T00:46:25.5307945Z           "complete": true,
2026-06-22T00:46:25.5308053Z           "evidence": [
2026-06-22T00:46:25.5308157Z             {
2026-06-22T00:46:25.5308329Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-22T00:46:25.5308433Z               "line": 45
2026-06-22T00:46:25.5308543Z             },
2026-06-22T00:46:25.5308649Z             {
2026-06-22T00:46:25.5308795Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-22T00:46:25.5308902Z               "line": 354
2026-06-22T00:46:25.5309207Z             },
2026-06-22T00:46:25.5309316Z             {
2026-06-22T00:46:25.5309492Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-22T00:46:25.5309693Z               "line": 31
2026-06-22T00:46:25.5309797Z             }
2026-06-22T00:46:25.5309903Z           ]
2026-06-22T00:46:25.5310002Z         },
2026-06-22T00:46:25.5310098Z         "unit": {
2026-06-22T00:46:25.5310214Z           "complete": true,
2026-06-22T00:46:25.5310321Z           "evidence": [
2026-06-22T00:46:25.5310418Z             {
2026-06-22T00:46:25.5310566Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.5310674Z               "line": 727
2026-06-22T00:46:25.5310783Z             }
2026-06-22T00:46:25.5310884Z           ]
2026-06-22T00:46:25.5310988Z         }
2026-06-22T00:46:25.5311093Z       }
2026-06-22T00:46:25.5311194Z     },
2026-06-22T00:46:25.5311294Z     {
2026-06-22T00:46:25.5311423Z       "id": "REQ-HAZARD-LOCAL-API-AUTH",
2026-06-22T00:46:25.5311679Z       "title": "Every local `api` mutation authenticated to an endpoint/session (codex #13)",
2026-06-22T00:46:25.5311790Z       "requiredStages": [
2026-06-22T00:46:25.5311904Z         "impl",
2026-06-22T00:46:25.5312009Z         "unit"
2026-06-22T00:46:25.5312110Z       ],
2026-06-22T00:46:25.5312214Z       "stages": {
2026-06-22T00:46:25.5312319Z         "doc": {
2026-06-22T00:46:25.5312434Z           "complete": false,
2026-06-22T00:46:25.5312537Z           "evidence": []
2026-06-22T00:46:25.5312643Z         },
2026-06-22T00:46:25.5312754Z         "impl": {
2026-06-22T00:46:25.5312862Z           "complete": true,
2026-06-22T00:46:25.5312971Z           "evidence": [
2026-06-22T00:46:25.5313071Z             {
2026-06-22T00:46:25.5313212Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T00:46:25.5313321Z               "line": 14
2026-06-22T00:46:25.5313422Z             },
2026-06-22T00:46:25.5313526Z             {
2026-06-22T00:46:25.5313655Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T00:46:25.5313780Z               "line": 566
2026-06-22T00:46:25.5313889Z             }
2026-06-22T00:46:25.5313994Z           ]
2026-06-22T00:46:25.5314104Z         },
2026-06-22T00:46:25.5314218Z         "int": {
2026-06-22T00:46:25.5314333Z           "complete": false,
2026-06-22T00:46:25.5314442Z           "evidence": []
2026-06-22T00:46:25.5314551Z         },
2026-06-22T00:46:25.5314653Z         "unit": {
2026-06-22T00:46:25.5314766Z           "complete": true,
2026-06-22T00:46:25.5314876Z           "evidence": [
2026-06-22T00:46:25.5314987Z             {
2026-06-22T00:46:25.5315119Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T00:46:25.5315229Z               "line": 130
2026-06-22T00:46:25.5315339Z             },
2026-06-22T00:46:25.5315448Z             {
2026-06-22T00:46:25.5315583Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T00:46:25.5315687Z               "line": 138
2026-06-22T00:46:25.5315786Z             },
2026-06-22T00:46:25.5315895Z             {
2026-06-22T00:46:25.5316032Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T00:46:25.5316150Z               "line": 146
2026-06-22T00:46:25.5316251Z             },
2026-06-22T00:46:25.5316347Z             {
2026-06-22T00:46:25.5316470Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T00:46:25.5316566Z               "line": 154
2026-06-22T00:46:25.5316676Z             },
2026-06-22T00:46:25.5316770Z             {
2026-06-22T00:46:25.5316905Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T00:46:25.5317014Z               "line": 162
2026-06-22T00:46:25.5317118Z             },
2026-06-22T00:46:25.5317225Z             {
2026-06-22T00:46:25.5317352Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T00:46:25.5317462Z               "line": 170
2026-06-22T00:46:25.5317563Z             }
2026-06-22T00:46:25.5317671Z           ]
2026-06-22T00:46:25.5317767Z         }
2026-06-22T00:46:25.5317864Z       }
2026-06-22T00:46:25.5317967Z     },
2026-06-22T00:46:25.5318159Z     {
2026-06-22T00:46:25.5318301Z       "id": "REQ-HAZARD-PAIR-RATE-LIMIT",
2026-06-22T00:46:25.5319290Z       "title": "Subnet-global pairing rate limit: one active ceremony per subnet, shared attempt counter, exponential backoff — a public pre-trust relay + multiple seed-holders otherwise enables distributed SPAKE2 guessing (and ±1 TOTP window triples the valid-password space) (ADR-0005 #11)",
2026-06-22T00:46:25.5319509Z       "requiredStages": [
2026-06-22T00:46:25.5319619Z         "impl",
2026-06-22T00:46:25.5319723Z         "unit"
2026-06-22T00:46:25.5319833Z       ],
2026-06-22T00:46:25.5319943Z       "stages": {
2026-06-22T00:46:25.5320048Z         "doc": {
2026-06-22T00:46:25.5320153Z           "complete": false,
2026-06-22T00:46:25.5320267Z           "evidence": []
2026-06-22T00:46:25.5320363Z         },
2026-06-22T00:46:25.5320473Z         "impl": {
2026-06-22T00:46:25.5320582Z           "complete": true,
2026-06-22T00:46:25.5320687Z           "evidence": [
2026-06-22T00:46:25.5320783Z             {
2026-06-22T00:46:25.5320953Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T00:46:25.5321069Z               "line": 34
2026-06-22T00:46:25.5321159Z             }
2026-06-22T00:46:25.5321267Z           ]
2026-06-22T00:46:25.5321368Z         },
2026-06-22T00:46:25.5321469Z         "int": {
2026-06-22T00:46:25.5321586Z           "complete": false,
2026-06-22T00:46:25.5321696Z           "evidence": []
2026-06-22T00:46:25.5321802Z         },
2026-06-22T00:46:25.5321906Z         "unit": {
2026-06-22T00:46:25.5322017Z           "complete": true,
2026-06-22T00:46:25.5322121Z           "evidence": [
2026-06-22T00:46:25.5322225Z             {
2026-06-22T00:46:25.5322393Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T00:46:25.5322502Z               "line": 188
2026-06-22T00:46:25.5322607Z             },
2026-06-22T00:46:25.5322713Z             {
2026-06-22T00:46:25.5322879Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T00:46:25.5322994Z               "line": 200
2026-06-22T00:46:25.5323102Z             },
2026-06-22T00:46:25.5323208Z             {
2026-06-22T00:46:25.5323376Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T00:46:25.5323493Z               "line": 211
2026-06-22T00:46:25.5323589Z             },
2026-06-22T00:46:25.5323693Z             {
2026-06-22T00:46:25.5323853Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T00:46:25.5323963Z               "line": 253
2026-06-22T00:46:25.5324068Z             },
2026-06-22T00:46:25.5324172Z             {
2026-06-22T00:46:25.5324330Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T00:46:25.5324429Z               "line": 277
2026-06-22T00:46:25.5324535Z             },
2026-06-22T00:46:25.5324645Z             {
2026-06-22T00:46:25.5324797Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T00:46:25.5324903Z               "line": 300
2026-06-22T00:46:25.5325012Z             },
2026-06-22T00:46:25.5325116Z             {
2026-06-22T00:46:25.5325270Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T00:46:25.5325383Z               "line": 316
2026-06-22T00:46:25.5325489Z             }
2026-06-22T00:46:25.5325594Z           ]
2026-06-22T00:46:25.5325698Z         }
2026-06-22T00:46:25.5325804Z       }
2026-06-22T00:46:25.5325900Z     },
2026-06-22T00:46:25.5325993Z     {
2026-06-22T00:46:25.5326143Z       "id": "REQ-HAZARD-PAIR-SEED-ROTATION",
2026-06-22T00:46:25.5326701Z       "title": "Removing a node rotates the subnet seed (epoch bump) so an old node/old seed cannot rejoin; trust-store delete alone is NOT revocation because the seed is replicated to every trusted node (ADR-0005 #10)",
2026-06-22T00:46:25.5326811Z       "requiredStages": [
2026-06-22T00:46:25.5326917Z         "impl",
2026-06-22T00:46:25.5327020Z         "unit"
2026-06-22T00:46:25.5327121Z       ],
2026-06-22T00:46:25.5327269Z       "stages": {
2026-06-22T00:46:25.5327489Z         "doc": {
2026-06-22T00:46:25.5327607Z           "complete": false,
2026-06-22T00:46:25.5327712Z           "evidence": []
2026-06-22T00:46:25.5327893Z         },
2026-06-22T00:46:25.5327998Z         "impl": {
2026-06-22T00:46:25.5328109Z           "complete": true,
2026-06-22T00:46:25.5328227Z           "evidence": [
2026-06-22T00:46:25.5328327Z             {
2026-06-22T00:46:25.5328480Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T00:46:25.5328589Z               "line": 29
2026-06-22T00:46:25.5328695Z             },
2026-06-22T00:46:25.5328795Z             {
2026-06-22T00:46:25.5328936Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T00:46:25.5329122Z               "line": 174
2026-06-22T00:46:25.5329220Z             },
2026-06-22T00:46:25.5329325Z             {
2026-06-22T00:46:25.5329464Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T00:46:25.5329573Z               "line": 194
2026-06-22T00:46:25.5329678Z             },
2026-06-22T00:46:25.5329788Z             {
2026-06-22T00:46:25.5329930Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T00:46:25.5330036Z               "line": 222
2026-06-22T00:46:25.5330141Z             }
2026-06-22T00:46:25.5330240Z           ]
2026-06-22T00:46:25.5330351Z         },
2026-06-22T00:46:25.5330455Z         "int": {
2026-06-22T00:46:25.5330574Z           "complete": false,
2026-06-22T00:46:25.5330690Z           "evidence": []
2026-06-22T00:46:25.5330789Z         },
2026-06-22T00:46:25.5330898Z         "unit": {
2026-06-22T00:46:25.5331004Z           "complete": true,
2026-06-22T00:46:25.5331118Z           "evidence": [
2026-06-22T00:46:25.5331223Z             {
2026-06-22T00:46:25.5331362Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T00:46:25.5331466Z               "line": 329
2026-06-22T00:46:25.5331572Z             },
2026-06-22T00:46:25.5331677Z             {
2026-06-22T00:46:25.5331813Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T00:46:25.5331937Z               "line": 344
2026-06-22T00:46:25.5332038Z             },
2026-06-22T00:46:25.5332146Z             {
2026-06-22T00:46:25.5332276Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T00:46:25.5332381Z               "line": 417
2026-06-22T00:46:25.5332494Z             },
2026-06-22T00:46:25.5332586Z             {
2026-06-22T00:46:25.5332729Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T00:46:25.5332834Z               "line": 433
2026-06-22T00:46:25.5332939Z             },
2026-06-22T00:46:25.5333044Z             {
2026-06-22T00:46:25.5333187Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T00:46:25.5333297Z               "line": 492
2026-06-22T00:46:25.5333401Z             },
2026-06-22T00:46:25.5333507Z             {
2026-06-22T00:46:25.5333640Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T00:46:25.5333744Z               "line": 506
2026-06-22T00:46:25.5333846Z             },
2026-06-22T00:46:25.5333949Z             {
2026-06-22T00:46:25.5334091Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T00:46:25.5334201Z               "line": 517
2026-06-22T00:46:25.5334304Z             },
2026-06-22T00:46:25.5334399Z             {
2026-06-22T00:46:25.5334543Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T00:46:25.5334652Z               "line": 528
2026-06-22T00:46:25.5334756Z             }
2026-06-22T00:46:25.5334862Z           ]
2026-06-22T00:46:25.5334967Z         }
2026-06-22T00:46:25.5335071Z       }
2026-06-22T00:46:25.5335172Z     },
2026-06-22T00:46:25.5335277Z     {
2026-06-22T00:46:25.5335425Z       "id": "REQ-HAZARD-PAIR-TRANSCRIPT-BIND",
2026-06-22T00:46:25.5336097Z       "title": "Pairing transcript binds roles, both node pubkeys, subnet ID, seed epoch, TOTP time-step, and confirmation MACs — or unknown-key-share/reflection/wrong-subnet/replay pairing remain possible (ADR-0005 #12)",
2026-06-22T00:46:25.5336224Z       "requiredStages": [
2026-06-22T00:46:25.5336432Z         "impl",
2026-06-22T00:46:25.5336534Z         "unit"
2026-06-22T00:46:25.5336650Z       ],
2026-06-22T00:46:25.5336896Z       "stages": {
2026-06-22T00:46:25.5337011Z         "doc": {
2026-06-22T00:46:25.5337116Z           "complete": false,
2026-06-22T00:46:25.5337233Z           "evidence": []
2026-06-22T00:46:25.5337338Z         },
2026-06-22T00:46:25.5337443Z         "impl": {
2026-06-22T00:46:25.5337556Z           "complete": true,
2026-06-22T00:46:25.5337662Z           "evidence": [
2026-06-22T00:46:25.5337772Z             {
2026-06-22T00:46:25.5337919Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T00:46:25.5338030Z               "line": 27
2026-06-22T00:46:25.5338130Z             },
2026-06-22T00:46:25.5338238Z             {
2026-06-22T00:46:25.5338392Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T00:46:25.5338501Z               "line": 110
2026-06-22T00:46:25.5338606Z             },
2026-06-22T00:46:25.5338711Z             {
2026-06-22T00:46:25.5338873Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T00:46:25.5339059Z               "line": 153
2026-06-22T00:46:25.5339173Z             },
2026-06-22T00:46:25.5339284Z             {
2026-06-22T00:46:25.5339440Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T00:46:25.5339553Z               "line": 182
2026-06-22T00:46:25.5339659Z             },
2026-06-22T00:46:25.5339766Z             {
2026-06-22T00:46:25.5339933Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T00:46:25.5340039Z               "line": 31
2026-06-22T00:46:25.5340147Z             },
2026-06-22T00:46:25.5340248Z             {
2026-06-22T00:46:25.5340419Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T00:46:25.5340524Z               "line": 113
2026-06-22T00:46:25.5340629Z             },
2026-06-22T00:46:25.5340734Z             {
2026-06-22T00:46:25.5340888Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T00:46:25.5341006Z               "line": 138
2026-06-22T00:46:25.5341111Z             }
2026-06-22T00:46:25.5341222Z           ]
2026-06-22T00:46:25.5341320Z         },
2026-06-22T00:46:25.5341425Z         "int": {
2026-06-22T00:46:25.5341536Z           "complete": false,
2026-06-22T00:46:25.5341635Z           "evidence": []
2026-06-22T00:46:25.5341745Z         },
2026-06-22T00:46:25.5341846Z         "unit": {
2026-06-22T00:46:25.5341954Z           "complete": true,
2026-06-22T00:46:25.5342055Z           "evidence": [
2026-06-22T00:46:25.5342166Z             {
2026-06-22T00:46:25.5342311Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T00:46:25.5342425Z               "line": 261
2026-06-22T00:46:25.5342536Z             },
2026-06-22T00:46:25.5342645Z             {
2026-06-22T00:46:25.5342803Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T00:46:25.5342908Z               "line": 276
2026-06-22T00:46:25.5343021Z             },
2026-06-22T00:46:25.5343123Z             {
2026-06-22T00:46:25.5343270Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T00:46:25.5343384Z               "line": 293
2026-06-22T00:46:25.5343485Z             },
2026-06-22T00:46:25.5343594Z             {
2026-06-22T00:46:25.5343747Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T00:46:25.5343852Z               "line": 310
2026-06-22T00:46:25.5343961Z             },
2026-06-22T00:46:25.5344062Z             {
2026-06-22T00:46:25.5344209Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T00:46:25.5344318Z               "line": 327
2026-06-22T00:46:25.5344425Z             },
2026-06-22T00:46:25.5344523Z             {
2026-06-22T00:46:25.5344675Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T00:46:25.5344785Z               "line": 366
2026-06-22T00:46:25.5344888Z             },
2026-06-22T00:46:25.5344992Z             {
2026-06-22T00:46:25.5345156Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T00:46:25.5345379Z               "line": 179
2026-06-22T00:46:25.5345578Z             },
2026-06-22T00:46:25.5345684Z             {
2026-06-22T00:46:25.5345855Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T00:46:25.5345960Z               "line": 194
2026-06-22T00:46:25.5346066Z             },
2026-06-22T00:46:25.5346170Z             {
2026-06-22T00:46:25.5346328Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T00:46:25.5346446Z               "line": 204
2026-06-22T00:46:25.5346551Z             },
2026-06-22T00:46:25.5346657Z             {
2026-06-22T00:46:25.5346819Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T00:46:25.5346919Z               "line": 259
2026-06-22T00:46:25.5347020Z             },
2026-06-22T00:46:25.5347118Z             {
2026-06-22T00:46:25.5347278Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T00:46:25.5347387Z               "line": 269
2026-06-22T00:46:25.5347495Z             },
2026-06-22T00:46:25.5347600Z             {
2026-06-22T00:46:25.5347764Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T00:46:25.5347868Z               "line": 283
2026-06-22T00:46:25.5347970Z             }
2026-06-22T00:46:25.5348093Z           ]
2026-06-22T00:46:25.5348193Z         }
2026-06-22T00:46:25.5348290Z       }
2026-06-22T00:46:25.5348394Z     },
2026-06-22T00:46:25.5348532Z     {
2026-06-22T00:46:25.5348670Z       "id": "REQ-HAZARD-PARENT-PID-PREFER",
2026-06-22T00:46:25.5348890Z       "title": "Prefer stable parent PID / broker handle over ephemeral PID (2.1)",
2026-06-22T00:46:25.5349080Z       "requiredStages": [],
2026-06-22T00:46:25.5349186Z       "stages": {
2026-06-22T00:46:25.5349313Z         "doc": {
2026-06-22T00:46:25.5349433Z           "complete": false,
2026-06-22T00:46:25.5349553Z           "evidence": []
2026-06-22T00:46:25.5349652Z         },
2026-06-22T00:46:25.5349772Z         "impl": {
2026-06-22T00:46:25.5349888Z           "complete": false,
2026-06-22T00:46:25.5350000Z           "evidence": []
2026-06-22T00:46:25.5350108Z         },
2026-06-22T00:46:25.5350214Z         "int": {
2026-06-22T00:46:25.5350326Z           "complete": false,
2026-06-22T00:46:25.5350435Z           "evidence": []
2026-06-22T00:46:25.5350541Z         },
2026-06-22T00:46:25.5350645Z         "unit": {
2026-06-22T00:46:25.5350750Z           "complete": false,
2026-06-22T00:46:25.5350856Z           "evidence": []
2026-06-22T00:46:25.5350956Z         }
2026-06-22T00:46:25.5351060Z       }
2026-06-22T00:46:25.5351162Z     },
2026-06-22T00:46:25.5351266Z     {
2026-06-22T00:46:25.5351409Z       "id": "REQ-HAZARD-PSYCHE-OUTBOUND-PROXY",
2026-06-22T00:46:25.5352238Z       "title": "Psyche outbound captured + sanitized: the live-Psyche turn driver captures stdout (never Stdio::null), and the daemon strips/re-stamps Psyche-supplied from=/target and constrains routing (reply→__REPLY_TO__ sender, notify→own user/subnet) (7.3)",
2026-06-22T00:46:25.5352368Z       "requiredStages": [
2026-06-22T00:46:25.5352482Z         "impl",
2026-06-22T00:46:25.5352591Z         "unit"
2026-06-22T00:46:25.5352697Z       ],
2026-06-22T00:46:25.5352801Z       "stages": {
2026-06-22T00:46:25.5352905Z         "doc": {
2026-06-22T00:46:25.5353019Z           "complete": false,
2026-06-22T00:46:25.5353135Z           "evidence": []
2026-06-22T00:46:25.5353234Z         },
2026-06-22T00:46:25.5353353Z         "impl": {
2026-06-22T00:46:25.5353473Z           "complete": true,
2026-06-22T00:46:25.5353572Z           "evidence": [
2026-06-22T00:46:25.5353683Z             {
2026-06-22T00:46:25.5353830Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T00:46:25.5353949Z               "line": 26
2026-06-22T00:46:25.5354054Z             },
2026-06-22T00:46:25.5354159Z             {
2026-06-22T00:46:25.5354307Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T00:46:25.5354417Z               "line": 95
2026-06-22T00:46:25.5354642Z             },
2026-06-22T00:46:25.5354746Z             {
2026-06-22T00:46:25.5354990Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T00:46:25.5355093Z               "line": 166
2026-06-22T00:46:25.5358045Z             },
2026-06-22T00:46:25.5358183Z             {
2026-06-22T00:46:25.5358343Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T00:46:25.5358458Z               "line": 19
2026-06-22T00:46:25.5358563Z             },
2026-06-22T00:46:25.5358667Z             {
2026-06-22T00:46:25.5358821Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T00:46:25.5358926Z               "line": 50
2026-06-22T00:46:25.5359131Z             },
2026-06-22T00:46:25.5359235Z             {
2026-06-22T00:46:25.5359363Z               "path": "crates/spt-live/src/turn.rs",
2026-06-22T00:46:25.5359469Z               "line": 18
2026-06-22T00:46:25.5359578Z             },
2026-06-22T00:46:25.5359673Z             {
2026-06-22T00:46:25.5359837Z               "path": "crates/spt-live/src/turn.rs",
2026-06-22T00:46:25.5359941Z               "line": 71
2026-06-22T00:46:25.5360046Z             },
2026-06-22T00:46:25.5360152Z             {
2026-06-22T00:46:25.5360284Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T00:46:25.5360390Z               "line": 87
2026-06-22T00:46:25.5360490Z             }
2026-06-22T00:46:25.5360593Z           ]
2026-06-22T00:46:25.5360698Z         },
2026-06-22T00:46:25.5360798Z         "int": {
2026-06-22T00:46:25.5360910Z           "complete": false,
2026-06-22T00:46:25.5361020Z           "evidence": []
2026-06-22T00:46:25.5361125Z         },
2026-06-22T00:46:25.5361229Z         "unit": {
2026-06-22T00:46:25.5361334Z           "complete": true,
2026-06-22T00:46:25.5361440Z           "evidence": [
2026-06-22T00:46:25.5361534Z             {
2026-06-22T00:46:25.5361688Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T00:46:25.5361797Z               "line": 289
2026-06-22T00:46:25.5361906Z             },
2026-06-22T00:46:25.5362008Z             {
2026-06-22T00:46:25.5362160Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T00:46:25.5362264Z               "line": 314
2026-06-22T00:46:25.5362366Z             },
2026-06-22T00:46:25.5362475Z             {
2026-06-22T00:46:25.5362618Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T00:46:25.5362727Z               "line": 350
2026-06-22T00:46:25.5362827Z             },
2026-06-22T00:46:25.5362938Z             {
2026-06-22T00:46:25.5363079Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T00:46:25.5363185Z               "line": 418
2026-06-22T00:46:25.5363296Z             },
2026-06-22T00:46:25.5363399Z             {
2026-06-22T00:46:25.5363540Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T00:46:25.5363651Z               "line": 429
2026-06-22T00:46:25.5363751Z             },
2026-06-22T00:46:25.5363850Z             {
2026-06-22T00:46:25.5364004Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T00:46:25.5364123Z               "line": 460
2026-06-22T00:46:25.5364228Z             },
2026-06-22T00:46:25.5364338Z             {
2026-06-22T00:46:25.5364489Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T00:46:25.5364596Z               "line": 471
2026-06-22T00:46:25.5364705Z             },
2026-06-22T00:46:25.5364800Z             {
2026-06-22T00:46:25.5364953Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T00:46:25.5365053Z               "line": 77
2026-06-22T00:46:25.5365158Z             },
2026-06-22T00:46:25.5365263Z             {
2026-06-22T00:46:25.5365396Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T00:46:25.5365506Z               "line": 97
2026-06-22T00:46:25.5365611Z             },
2026-06-22T00:46:25.5365710Z             {
2026-06-22T00:46:25.5365853Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T00:46:25.5365956Z               "line": 112
2026-06-22T00:46:25.5366218Z             },
2026-06-22T00:46:25.5366323Z             {
2026-06-22T00:46:25.5366465Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T00:46:25.5366670Z               "line": 123
2026-06-22T00:46:25.5366785Z             },
2026-06-22T00:46:25.5366886Z             {
2026-06-22T00:46:25.5367032Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T00:46:25.5367148Z               "line": 130
2026-06-22T00:46:25.5367243Z             },
2026-06-22T00:46:25.5367338Z             {
2026-06-22T00:46:25.5367477Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T00:46:25.5367586Z               "line": 145
2026-06-22T00:46:25.5367690Z             },
2026-06-22T00:46:25.5367792Z             {
2026-06-22T00:46:25.5367924Z               "path": "crates/spt-live/src/turn.rs",
2026-06-22T00:46:25.5368030Z               "line": 115
2026-06-22T00:46:25.5368140Z             },
2026-06-22T00:46:25.5368239Z             {
2026-06-22T00:46:25.5368383Z               "path": "crates/spt-live/src/turn.rs",
2026-06-22T00:46:25.5368488Z               "line": 130
2026-06-22T00:46:25.5368600Z             },
2026-06-22T00:46:25.5368705Z             {
2026-06-22T00:46:25.5368842Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T00:46:25.5369008Z               "line": 428
2026-06-22T00:46:25.5369105Z             }
2026-06-22T00:46:25.5369209Z           ]
2026-06-22T00:46:25.5369309Z         }
2026-06-22T00:46:25.5369405Z       }
2026-06-22T00:46:25.5369510Z     },
2026-06-22T00:46:25.5369613Z     {
2026-06-22T00:46:25.5369762Z       "id": "REQ-HAZARD-PTY-INPUT-WRITER-WEDGE",
2026-06-22T00:46:25.5375805Z       "title": "Pasting into an `spt rc` session WEDGES the broker — after a paste the operator can no longer type AND can no longer attach to NEW or EXISTING sessions (`brain IPC read deadline`). ROOT (doyle /diagnose, code-grounded): the operator-keystroke path rc -> net-stream Input -> serve_attach (attach.rs:197 brain.send_effect) -> KIND_INPUT -> broker dispatch loop (broker.rs:1091) -> dispatch_input (broker.rs:1459) -> session.write_input(&bytes) runs SYNCHRONOUSLY on the broker request-handling thread. W1b (REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE) released the journal lock across the effect (fix 1) + made PtyWrite ephemeral/no-fsync (fix 3) but EXPLICITLY DEFERRED fix (2) — bound/fail-fast the PtyWrite itself. A single keystroke never fills the ConPTY input buffer; a PASTE BURST does -> write_input blocks -> the dispatch thread cannot service the next frame (a re-attach subscribe, a become_controller restore-write, an inject-floor flush) -> wedge. Not a bug-2 regression (the byte path funnels to the same write_input; paste just reliably fills the buffer). FIX (doyle design, V0.13.0-P0-PTY-INPUT-WRITER-DESIGN.md, CONTEXT L33 broker-owns-PTY/minimal + L435 SessionSurface + single-writer pattern): one dedicated per-session INPUT-WRITER THREAD = the SOLE caller of the blocking write_input, fed by a BOUNDED FIFO channel; every caller (dispatch_input, serve_attach->send_effect, inject-floor flush) ENQUEUES + returns immediately, never blocks. A blocked/slow harness blocks ONLY its own writer thread, never the broker dispatch. Backpressure (operator ruling): queue full => DROP excess input + stamp the session INPUT_BACKPRESSURE (visible health signal); the daemon NEVER wedges; a merely-slow harness self-heals as the writer drains. Exactly-once preserved (PtyWrite ephemeral: apply_once effect = the non-blocking enqueue => Applied; ack now means accepted+ordered, benign — rc does not gate on landing); order preserved (single FIFO + single writer); inject-floor (W2 Layer C) choreography moves to the lone writer. Completes the W1b-deferred fix (2), cross-platform (cfg(unix) forkpty park folds in). (v0.13.0)",
2026-06-22T00:46:25.5376009Z       "requiredStages": [
2026-06-22T00:46:25.5376120Z         "impl",
2026-06-22T00:46:25.5376218Z         "unit",
2026-06-22T00:46:25.5376322Z         "int"
2026-06-22T00:46:25.5376427Z       ],
2026-06-22T00:46:25.5376530Z       "stages": {
2026-06-22T00:46:25.5376745Z         "doc": {
2026-06-22T00:46:25.5376859Z           "complete": false,
2026-06-22T00:46:25.5377064Z           "evidence": []
2026-06-22T00:46:25.5377174Z         },
2026-06-22T00:46:25.5377287Z         "impl": {
2026-06-22T00:46:25.5377398Z           "complete": true,
2026-06-22T00:46:25.5377503Z           "evidence": [
2026-06-22T00:46:25.5377607Z             {
2026-06-22T00:46:25.5377755Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.5377865Z               "line": 1032
2026-06-22T00:46:25.5377970Z             },
2026-06-22T00:46:25.5378070Z             {
2026-06-22T00:46:25.5378218Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T00:46:25.5378319Z               "line": 322
2026-06-22T00:46:25.5378413Z             }
2026-06-22T00:46:25.5378518Z           ]
2026-06-22T00:46:25.5378619Z         },
2026-06-22T00:46:25.5378724Z         "int": {
2026-06-22T00:46:25.5378838Z           "complete": true,
2026-06-22T00:46:25.5379025Z           "evidence": [
2026-06-22T00:46:25.5379128Z             {
2026-06-22T00:46:25.5379290Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T00:46:25.5379416Z               "line": 2013
2026-06-22T00:46:25.5379520Z             }
2026-06-22T00:46:25.5379621Z           ]
2026-06-22T00:46:25.5379727Z         },
2026-06-22T00:46:25.5379821Z         "unit": {
2026-06-22T00:46:25.5379941Z           "complete": true,
2026-06-22T00:46:25.5380041Z           "evidence": [
2026-06-22T00:46:25.5380145Z             {
2026-06-22T00:46:25.5380289Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.5380403Z               "line": 2866
2026-06-22T00:46:25.5380508Z             },
2026-06-22T00:46:25.5380609Z             {
2026-06-22T00:46:25.5380751Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.5380861Z               "line": 2930
2026-06-22T00:46:25.5380976Z             },
2026-06-22T00:46:25.5381080Z             {
2026-06-22T00:46:25.5381219Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.5381333Z               "line": 2985
2026-06-22T00:46:25.5381433Z             }
2026-06-22T00:46:25.5381544Z           ]
2026-06-22T00:46:25.5381648Z         }
2026-06-22T00:46:25.5381751Z       }
2026-06-22T00:46:25.5381852Z     },
2026-06-22T00:46:25.5381955Z     {
2026-06-22T00:46:25.5382087Z       "id": "REQ-HAZARD-PUMP-IPC-DEADLINE",
2026-06-22T00:46:25.5382932Z       "title": "The single-threaded peer pump's brain-IPC reads are deadline-bounded (PUMP_PEER_IO_TIMEOUT, total-wait per call); a TimedOut read POISONS the client and escalates to a SUPERVISED RESTART, never a per-peer retry — a black-holed peer must never wedge the whole pump",
2026-06-22T00:46:25.5383050Z       "requiredStages": [
2026-06-22T00:46:25.5383156Z         "doc",
2026-06-22T00:46:25.5383265Z         "impl",
2026-06-22T00:46:25.5383375Z         "unit"
2026-06-22T00:46:25.5383471Z       ],
2026-06-22T00:46:25.5383580Z       "stages": {
2026-06-22T00:46:25.5383690Z         "doc": {
2026-06-22T00:46:25.5383810Z           "complete": true,
2026-06-22T00:46:25.5383918Z           "evidence": [
2026-06-22T00:46:25.5384024Z             {
2026-06-22T00:46:25.5384172Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T00:46:25.5384276Z               "line": 374
2026-06-22T00:46:25.5384373Z             }
2026-06-22T00:46:25.5384473Z           ]
2026-06-22T00:46:25.5384580Z         },
2026-06-22T00:46:25.5384685Z         "impl": {
2026-06-22T00:46:25.5384800Z           "complete": true,
2026-06-22T00:46:25.5384904Z           "evidence": [
2026-06-22T00:46:25.5384995Z             {
2026-06-22T00:46:25.5385143Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T00:46:25.5385252Z               "line": 206
2026-06-22T00:46:25.5385358Z             },
2026-06-22T00:46:25.5385463Z             {
2026-06-22T00:46:25.5385605Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T00:46:25.5385711Z               "line": 310
2026-06-22T00:46:25.5385920Z             },
2026-06-22T00:46:25.5386021Z             {
2026-06-22T00:46:25.5386149Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T00:46:25.5386346Z               "line": 568
2026-06-22T00:46:25.5386454Z             },
2026-06-22T00:46:25.5386564Z             {
2026-06-22T00:46:25.5386703Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T00:46:25.5386811Z               "line": 583
2026-06-22T00:46:25.5386915Z             },
2026-06-22T00:46:25.5387021Z             {
2026-06-22T00:46:25.5387157Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T00:46:25.5387271Z               "line": 1318
2026-06-22T00:46:25.5387377Z             },
2026-06-22T00:46:25.5387481Z             {
2026-06-22T00:46:25.5387624Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T00:46:25.5387725Z               "line": 443
2026-06-22T00:46:25.5387824Z             },
2026-06-22T00:46:25.5387925Z             {
2026-06-22T00:46:25.5388110Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T00:46:25.5388216Z               "line": 590
2026-06-22T00:46:25.5388330Z             },
2026-06-22T00:46:25.5388448Z             {
2026-06-22T00:46:25.5388621Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T00:46:25.5388730Z               "line": 731
2026-06-22T00:46:25.5388825Z             }
2026-06-22T00:46:25.5388927Z           ]
2026-06-22T00:46:25.5389097Z         },
2026-06-22T00:46:25.5389208Z         "int": {
2026-06-22T00:46:25.5389321Z           "complete": false,
2026-06-22T00:46:25.5389431Z           "evidence": []
2026-06-22T00:46:25.5389523Z         },
2026-06-22T00:46:25.5389627Z         "unit": {
2026-06-22T00:46:25.5389740Z           "complete": true,
2026-06-22T00:46:25.5389859Z           "evidence": [
2026-06-22T00:46:25.5390010Z             {
2026-06-22T00:46:25.5390152Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T00:46:25.5390282Z               "line": 1155
2026-06-22T00:46:25.5390443Z             },
2026-06-22T00:46:25.5390549Z             {
2026-06-22T00:46:25.5390719Z               "path": "crates/spt-daemon/tests/pumpdeadline.rs",
2026-06-22T00:46:25.5390830Z               "line": 30
2026-06-22T00:46:25.5390925Z             }
2026-06-22T00:46:25.5391030Z           ]
2026-06-22T00:46:25.5391136Z         }
2026-06-22T00:46:25.5391230Z       }
2026-06-22T00:46:25.5391340Z     },
2026-06-22T00:46:25.5391446Z     {
2026-06-22T00:46:25.5391569Z       "id": "REQ-HAZARD-RC-ATTACH-FAILFAST",
2026-06-22T00:46:25.5394860Z       "title": "B1: `spt rc <id>` to a DEAD or non-streaming session fails fast with a clear message, never an INFINITE blank screen. Today rc.rs run_attach (209-231) + pump spawns PUMP_IPC_READER and blocks: the poll times out each slice but the stream never produces output, so the operator sees a permanent blank (operator: fresh wall-f attached, closed tab, then `spt rc wall-f` HUNG — the broker still resolved a session for it). FIX: (a) once B2 lands, gate attach on is_online/status — an offline endpoint yields a clean 'endpoint offline, start it' not an attach; (b) fail-fast — if the attach-open ack / first output does not arrive within a bound, surface a clear message, never an infinite blank; (c) the broker EOFs the attach stream when the session's child is dead, so rc's existing PumpEnd::BrokerGone graceful path (REQ-HAZARD-RC-EOF) catches it. PIN the exact sub-mechanism with a repro test FIRST (dead-session-lingers-in-broker vs reaped-but-rc-waits vs alive-resting-no-wake — the wall-f Windows tab-close: child alive-silent vs dead-not-reaped). (v0.12.0)",
2026-06-22T00:46:25.5395014Z       "requiredStages": [
2026-06-22T00:46:25.5395117Z         "impl",
2026-06-22T00:46:25.5395221Z         "unit",
2026-06-22T00:46:25.5395322Z         "int"
2026-06-22T00:46:25.5395423Z       ],
2026-06-22T00:46:25.5395531Z       "stages": {
2026-06-22T00:46:25.5395637Z         "doc": {
2026-06-22T00:46:25.5395761Z           "complete": false,
2026-06-22T00:46:25.5395865Z           "evidence": []
2026-06-22T00:46:25.5396085Z         },
2026-06-22T00:46:25.5396199Z         "impl": {
2026-06-22T00:46:25.5396409Z           "complete": true,
2026-06-22T00:46:25.5396518Z           "evidence": [
2026-06-22T00:46:25.5396620Z             {
2026-06-22T00:46:25.5396747Z               "path": "crates/spt/src/rc.rs",
2026-06-22T00:46:25.5396868Z               "line": 718
2026-06-22T00:46:25.5396967Z             },
2026-06-22T00:46:25.5397076Z             {
2026-06-22T00:46:25.5397201Z               "path": "crates/spt/src/rc.rs",
2026-06-22T00:46:25.5397306Z               "line": 887
2026-06-22T00:46:25.5397400Z             }
2026-06-22T00:46:25.5397505Z           ]
2026-06-22T00:46:25.5397614Z         },
2026-06-22T00:46:25.5397717Z         "int": {
2026-06-22T00:46:25.5397836Z           "complete": true,
2026-06-22T00:46:25.5397937Z           "evidence": [
2026-06-22T00:46:25.5398041Z             {
2026-06-22T00:46:25.5398184Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T00:46:25.5398304Z               "line": 420
2026-06-22T00:46:25.5398394Z             }
2026-06-22T00:46:25.5398495Z           ]
2026-06-22T00:46:25.5398609Z         },
2026-06-22T00:46:25.5398699Z         "unit": {
2026-06-22T00:46:25.5398824Z           "complete": true,
2026-06-22T00:46:25.5398933Z           "evidence": [
2026-06-22T00:46:25.5399114Z             {
2026-06-22T00:46:25.5399228Z               "path": "crates/spt/src/rc.rs",
2026-06-22T00:46:25.5399338Z               "line": 1072
2026-06-22T00:46:25.5399444Z             },
2026-06-22T00:46:25.5399547Z             {
2026-06-22T00:46:25.5399672Z               "path": "crates/spt/src/rc.rs",
2026-06-22T00:46:25.5399773Z               "line": 1096
2026-06-22T00:46:25.5399876Z             }
2026-06-22T00:46:25.5399987Z           ]
2026-06-22T00:46:25.5400083Z         }
2026-06-22T00:46:25.5400191Z       }
2026-06-22T00:46:25.5400291Z     },
2026-06-22T00:46:25.5400395Z     {
2026-06-22T00:46:25.5400527Z       "id": "REQ-HAZARD-RC-ATTACH-ONLINE-RACE",
2026-06-22T00:46:25.5404234Z       "title": "`spt endpoint run` in an ATTACH/VIEW terminal action attaches BEFORE the freshly-spawned endpoint is online, so the attach races (or outright loses to) the harness bind. ROOT (doyle /diagnose, code-grounded): cmd_endpoint_run (cli.rs) does launch_harness_brokered_in -> (if start: return) -> run_attach with NO await-online between them. launch_harness_brokered_in returns once the harness PROCESS is spawned, but the broker-PTY bind (info status -> STATUS_ONLINE + the live session) lands ASYNC. Both picker attach paths route here with start=false (RunMode::Attach -> cmd_endpoint_run start=false,view=false): Start-now catches the endpoint mid-bringup -> run_attach attempts + loses the handshake race; Resume-from-history catches it still fully OFFLINE -> run_attach's status-gate (REQ-HAZARD-RC-ATTACH-FAILFAST) short-circuits 'offline - nothing to attach' and NEVER attempts. SAME root, two faces (the W4 attach-by-default surfaced both; an online endpoint is unaffected - the picker returns Outcome::Attach, not Run). FIX: in cmd_endpoint_run, when the terminal action is attach/view (NOT start), AWAIT the endpoint online between launch_harness_brokered_in success and run_attach - poll spt_store::info read_info().status to STATUS_ONLINE with a bounded harness-boot deadline (~25s) at a tight interval; on online -> run_attach; on timeout -> ENDPOINT_RUN_ONLINE_TIMEOUT err (do NOT attach a dead bringup). (v0.13.0)",
2026-06-22T00:46:25.5404371Z       "requiredStages": [
2026-06-22T00:46:25.5404476Z         "impl",
2026-06-22T00:46:25.5404582Z         "unit",
2026-06-22T00:46:25.5404686Z         "int"
2026-06-22T00:46:25.5404791Z       ],
2026-06-22T00:46:25.5404897Z       "stages": {
2026-06-22T00:46:25.5404996Z         "doc": {
2026-06-22T00:46:25.5405110Z           "complete": false,
2026-06-22T00:46:25.5405212Z           "evidence": []
2026-06-22T00:46:25.5405315Z         },
2026-06-22T00:46:25.5405420Z         "impl": {
2026-06-22T00:46:25.5405536Z           "complete": true,
2026-06-22T00:46:25.5405762Z           "evidence": [
2026-06-22T00:46:25.5405872Z             {
2026-06-22T00:46:25.5406086Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5406197Z               "line": 1417
2026-06-22T00:46:25.5406307Z             },
2026-06-22T00:46:25.5406406Z             {
2026-06-22T00:46:25.5406536Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5406645Z               "line": 1441
2026-06-22T00:46:25.5406750Z             }
2026-06-22T00:46:25.5406851Z           ]
2026-06-22T00:46:25.5406945Z         },
2026-06-22T00:46:25.5407050Z         "int": {
2026-06-22T00:46:25.5407156Z           "complete": true,
2026-06-22T00:46:25.5407269Z           "evidence": [
2026-06-22T00:46:25.5407369Z             {
2026-06-22T00:46:25.5407523Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-22T00:46:25.5407627Z               "line": 329
2026-06-22T00:46:25.5407732Z             }
2026-06-22T00:46:25.5407838Z           ]
2026-06-22T00:46:25.5407945Z         },
2026-06-22T00:46:25.5408050Z         "unit": {
2026-06-22T00:46:25.5408160Z           "complete": true,
2026-06-22T00:46:25.5408286Z           "evidence": [
2026-06-22T00:46:25.5408392Z             {
2026-06-22T00:46:25.5408512Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5408620Z               "line": 8169
2026-06-22T00:46:25.5408721Z             }
2026-06-22T00:46:25.5408821Z           ]
2026-06-22T00:46:25.5408925Z         }
2026-06-22T00:46:25.5409112Z       }
2026-06-22T00:46:25.5409216Z     },
2026-06-22T00:46:25.5409321Z     {
2026-06-22T00:46:25.5409450Z       "id": "REQ-HAZARD-RC-EOF",
2026-06-22T00:46:25.5413215Z       "title": "A severed broker stream during a live rc session surfaces GRACEFULLY, never as a raw io error that crashes the PTY. The rc read-loop (rc.rs:352-362) continues only on WouldBlock/TimedOut; ANY other read_event_until error — including UnexpectedEof 'failed to fill whole buffer' — returns Err → RC_FAIL → the PTY 'crashes' from the user's view. Confirmed trigger: a deliberate `spt daemon stop` (broker bounce) severs an active rc (perri stopped the daemon to release owlery watch handles). Same severed-broker-stream EOF class as the v0.9.1 seed fix (seed_fail_message) and the listener-death case — spt-core must classify a broker-gone EOF and (a) surface a CLEAR actionable message ('daemon stopped/restarted — re-run / reconnect'), never the raw buffer error, and ideally (b) AUTO-REATTACH to the same session on the fresh broker (the broker is the daemon-lifetime anchor; it returns on the next `spt api` call). FOLD two side-observations: (1) `spt daemon stop` SILENTLY drops active rc/live sessions — warn ('N active session(s) will drop') or graceful-detach on stop; (2) the daemon holds owlery WATCH HANDLES on perch dirs so a torn-down perch dir stays 'Device busy' until a full daemon stop releases them (perri's rt-* cleanup) — a torn-down perch's handle should release without a daemon stop. doyle Finding C, root-caused. (post-v0.10.0)",
2026-06-22T00:46:25.5413394Z       "requiredStages": [
2026-06-22T00:46:25.5413503Z         "impl",
2026-06-22T00:46:25.5413612Z         "unit"
2026-06-22T00:46:25.5413721Z       ],
2026-06-22T00:46:25.5413830Z       "stages": {
2026-06-22T00:46:25.5413931Z         "doc": {
2026-06-22T00:46:25.5414049Z           "complete": false,
2026-06-22T00:46:25.5414159Z           "evidence": []
2026-06-22T00:46:25.5414264Z         },
2026-06-22T00:46:25.5414378Z         "impl": {
2026-06-22T00:46:25.5414484Z           "complete": true,
2026-06-22T00:46:25.5414598Z           "evidence": [
2026-06-22T00:46:25.5414702Z             {
2026-06-22T00:46:25.5414832Z               "path": "crates/spt/src/rc.rs",
2026-06-22T00:46:25.5414946Z               "line": 910
2026-06-22T00:46:25.5415050Z             }
2026-06-22T00:46:25.5415156Z           ]
2026-06-22T00:46:25.5415261Z         },
2026-06-22T00:46:25.5415365Z         "int": {
2026-06-22T00:46:25.5415481Z           "complete": false,
2026-06-22T00:46:25.5415589Z           "evidence": []
2026-06-22T00:46:25.5415800Z         },
2026-06-22T00:46:25.5415909Z         "unit": {
2026-06-22T00:46:25.5416024Z           "complete": true,
2026-06-22T00:46:25.5416242Z           "evidence": [
2026-06-22T00:46:25.5416351Z             {
2026-06-22T00:46:25.5416476Z               "path": "crates/spt/src/rc.rs",
2026-06-22T00:46:25.5416590Z               "line": 1112
2026-06-22T00:46:25.5416694Z             }
2026-06-22T00:46:25.5416791Z           ]
2026-06-22T00:46:25.5416895Z         }
2026-06-22T00:46:25.5417000Z       }
2026-06-22T00:46:25.5417101Z     },
2026-06-22T00:46:25.5417205Z     {
2026-06-22T00:46:25.5417353Z       "id": "REQ-HAZARD-RC-INPUT-KEY-ENCODING",
2026-06-22T00:46:25.5421857Z       "title": "An `spt rc` session forwards the Backspace key as the VT DEL byte (0x7f), so the hosted TUI (Claude Code) deletes ONE character — never a whole word. SYMPTOM (operator dogfooding): Backspace in an rc session always behaves like ctrl+Backspace — deletes the entire last word. ROOT (doyle /diagnose, code-grounded, byte PENDING HITL confirm): rc is a RAW VERBATIM byte pump — spawn_stdin_reader (rc.rs:152) reads std::io::stdin() bytes under crossterm raw mode and forwards them unchanged (parse_stdin_chunk only intercepts the ctrl-b detach prefix); there is NO key-event encoding and NO 0x08↔0x7f normalization ANYWHERE in the tree (grep: zero SetConsoleMode / ENABLE_VIRTUAL_TERMINAL_INPUT). On Windows, crossterm enable_raw_mode does NOT set ENABLE_VIRTUAL_TERMINAL_INPUT, so the LEGACY console delivers ^H (0x08, ctrl+h) for Backspace instead of VT DEL (0x7f); Claude Code maps ^H → backward-kill-word → the observed whole-word delete. CONFIRM-FIRST (build the loop): an env-gated hexdump in spawn_stdin_reader (SPT_RC_DEBUG_KEYS) prints the forwarded byte; operator presses Backspace + ctrl+Backspace in a real rc session. FIX CANDIDATES: (a) enable ENABLE_VIRTUAL_TERMINAL_INPUT on the rc stdin console on Windows so the console emits proper VT (Backspace→0x7f, arrows/Home/End as CSI) — cleanest, fixes the whole key map not just Backspace; (b) narrow normalize bare 0x08→0x7f in the rc input path (riskier — a real ctrl+h is also 0x08). Prefer (a) unless it regresses other keys. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-22T00:46:25.5422047Z       "requiredStages": [
2026-06-22T00:46:25.5422157Z         "impl",
2026-06-22T00:46:25.5422243Z         "unit"
2026-06-22T00:46:25.5422352Z       ],
2026-06-22T00:46:25.5422453Z       "stages": {
2026-06-22T00:46:25.5422563Z         "doc": {
2026-06-22T00:46:25.5422672Z           "complete": false,
2026-06-22T00:46:25.5422782Z           "evidence": []
2026-06-22T00:46:25.5422892Z         },
2026-06-22T00:46:25.5422996Z         "impl": {
2026-06-22T00:46:25.5423107Z           "complete": true,
2026-06-22T00:46:25.5423216Z           "evidence": [
2026-06-22T00:46:25.5423325Z             {
2026-06-22T00:46:25.5423450Z               "path": "crates/spt/src/rc.rs",
2026-06-22T00:46:25.5423559Z               "line": 264
2026-06-22T00:46:25.5423659Z             }
2026-06-22T00:46:25.5423765Z           ]
2026-06-22T00:46:25.5423874Z         },
2026-06-22T00:46:25.5423973Z         "int": {
2026-06-22T00:46:25.5424077Z           "complete": false,
2026-06-22T00:46:25.5424195Z           "evidence": []
2026-06-22T00:46:25.5424290Z         },
2026-06-22T00:46:25.5424414Z         "unit": {
2026-06-22T00:46:25.5424529Z           "complete": true,
2026-06-22T00:46:25.5424638Z           "evidence": [
2026-06-22T00:46:25.5424744Z             {
2026-06-22T00:46:25.5424867Z               "path": "crates/spt/src/rc.rs",
2026-06-22T00:46:25.5424981Z               "line": 1094
2026-06-22T00:46:25.5425082Z             },
2026-06-22T00:46:25.5425182Z             {
2026-06-22T00:46:25.5425305Z               "path": "crates/spt/src/rc.rs",
2026-06-22T00:46:25.5425425Z               "line": 1225
2026-06-22T00:46:25.5425520Z             },
2026-06-22T00:46:25.5425625Z             {
2026-06-22T00:46:25.5425759Z               "path": "crates/spt/src/rc.rs",
2026-06-22T00:46:25.5425864Z               "line": 1227
2026-06-22T00:46:25.5426083Z             }
2026-06-22T00:46:25.5426188Z           ]
2026-06-22T00:46:25.5426379Z         }
2026-06-22T00:46:25.5426483Z       }
2026-06-22T00:46:25.5426594Z     },
2026-06-22T00:46:25.5426699Z     {
2026-06-22T00:46:25.5426835Z       "id": "REQ-HAZARD-REGISTRY-CONCURRENT",
2026-06-22T00:46:25.5427117Z       "title": "Concurrent SQLite openers (registry/spool) must not fail with 'database is locked' (4.7)",
2026-06-22T00:46:25.5427250Z       "requiredStages": [
2026-06-22T00:46:25.5427398Z         "impl",
2026-06-22T00:46:25.5427502Z         "unit"
2026-06-22T00:46:25.5427609Z       ],
2026-06-22T00:46:25.5427722Z       "stages": {
2026-06-22T00:46:25.5427813Z         "doc": {
2026-06-22T00:46:25.5427933Z           "complete": true,
2026-06-22T00:46:25.5428037Z           "evidence": [
2026-06-22T00:46:25.5428142Z             {
2026-06-22T00:46:25.5428276Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T00:46:25.5428389Z               "line": 139
2026-06-22T00:46:25.5428499Z             }
2026-06-22T00:46:25.5428605Z           ]
2026-06-22T00:46:25.5428709Z         },
2026-06-22T00:46:25.5428819Z         "impl": {
2026-06-22T00:46:25.5428934Z           "complete": true,
2026-06-22T00:46:25.5429123Z           "evidence": [
2026-06-22T00:46:25.5429232Z             {
2026-06-22T00:46:25.5429388Z               "path": "crates/spt-store/src/db.rs",
2026-06-22T00:46:25.5429497Z               "line": 29
2026-06-22T00:46:25.5429603Z             },
2026-06-22T00:46:25.5429707Z             {
2026-06-22T00:46:25.5429836Z               "path": "crates/spt-store/src/db.rs",
2026-06-22T00:46:25.5429941Z               "line": 67
2026-06-22T00:46:25.5430036Z             },
2026-06-22T00:46:25.5430146Z             {
2026-06-22T00:46:25.5430289Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T00:46:25.5430403Z               "line": 101
2026-06-22T00:46:25.5430509Z             },
2026-06-22T00:46:25.5430618Z             {
2026-06-22T00:46:25.5430770Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T00:46:25.5430876Z               "line": 30
2026-06-22T00:46:25.5430990Z             },
2026-06-22T00:46:25.5431090Z             {
2026-06-22T00:46:25.5431224Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T00:46:25.5431328Z               "line": 48
2026-06-22T00:46:25.5431439Z             }
2026-06-22T00:46:25.5431539Z           ]
2026-06-22T00:46:25.5431639Z         },
2026-06-22T00:46:25.5431749Z         "int": {
2026-06-22T00:46:25.5431863Z           "complete": false,
2026-06-22T00:46:25.5431976Z           "evidence": []
2026-06-22T00:46:25.5432081Z         },
2026-06-22T00:46:25.5432189Z         "unit": {
2026-06-22T00:46:25.5432297Z           "complete": true,
2026-06-22T00:46:25.5432408Z           "evidence": [
2026-06-22T00:46:25.5432518Z             {
2026-06-22T00:46:25.5432650Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T00:46:25.5432756Z               "line": 162
2026-06-22T00:46:25.5432861Z             }
2026-06-22T00:46:25.5432965Z           ]
2026-06-22T00:46:25.5433071Z         }
2026-06-22T00:46:25.5433181Z       }
2026-06-22T00:46:25.5433279Z     },
2026-06-22T00:46:25.5433381Z     {
2026-06-22T00:46:25.5433524Z       "id": "REQ-HAZARD-REGISTRY-DIR-CREATE",
2026-06-22T00:46:25.5433929Z       "title": "SQLite store opens create their parent dir themselves — a fresh-home registry op must not SQLITE_CANTOPEN (4.9)",
2026-06-22T00:46:25.5434054Z       "requiredStages": [
2026-06-22T00:46:25.5434161Z         "doc",
2026-06-22T00:46:25.5434258Z         "impl",
2026-06-22T00:46:25.5434364Z         "unit"
2026-06-22T00:46:25.5434466Z       ],
2026-06-22T00:46:25.5434580Z       "stages": {
2026-06-22T00:46:25.5434681Z         "doc": {
2026-06-22T00:46:25.5434802Z           "complete": true,
2026-06-22T00:46:25.5434906Z           "evidence": [
2026-06-22T00:46:25.5435008Z             {
2026-06-22T00:46:25.5435141Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T00:46:25.5435255Z               "line": 151
2026-06-22T00:46:25.5435479Z             }
2026-06-22T00:46:25.5435580Z           ]
2026-06-22T00:46:25.5435808Z         },
2026-06-22T00:46:25.5435914Z         "impl": {
2026-06-22T00:46:25.5436032Z           "complete": true,
2026-06-22T00:46:25.5436152Z           "evidence": [
2026-06-22T00:46:25.5436258Z             {
2026-06-22T00:46:25.5436409Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T00:46:25.5436519Z               "line": 22
2026-06-22T00:46:25.5436625Z             }
2026-06-22T00:46:25.5436719Z           ]
2026-06-22T00:46:25.5436824Z         },
2026-06-22T00:46:25.5436926Z         "int": {
2026-06-22T00:46:25.5437033Z           "complete": false,
2026-06-22T00:46:25.5437139Z           "evidence": []
2026-06-22T00:46:25.5437245Z         },
2026-06-22T00:46:25.5437357Z         "unit": {
2026-06-22T00:46:25.5437471Z           "complete": true,
2026-06-22T00:46:25.5437577Z           "evidence": [
2026-06-22T00:46:25.5437681Z             {
2026-06-22T00:46:25.5437834Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T00:46:25.5437949Z               "line": 298
2026-06-22T00:46:25.5438063Z             }
2026-06-22T00:46:25.5438164Z           ]
2026-06-22T00:46:25.5438273Z         }
2026-06-22T00:46:25.5438363Z       }
2026-06-22T00:46:25.5438464Z     },
2026-06-22T00:46:25.5438569Z     {
2026-06-22T00:46:25.5438706Z       "id": "REQ-HAZARD-REGISTRY-EPOCH-LEASE",
2026-06-22T00:46:25.5439250Z       "title": "Registry merge ordered by per-node monotonic epoch, never wall-clock — a stale Active can't clobber a newer Offline (4.8, red-team #8)",
2026-06-22T00:46:25.5439364Z       "requiredStages": [
2026-06-22T00:46:25.5439466Z         "impl",
2026-06-22T00:46:25.5439574Z         "unit"
2026-06-22T00:46:25.5439673Z       ],
2026-06-22T00:46:25.5439779Z       "stages": {
2026-06-22T00:46:25.5439882Z         "doc": {
2026-06-22T00:46:25.5440000Z           "complete": true,
2026-06-22T00:46:25.5440110Z           "evidence": [
2026-06-22T00:46:25.5440216Z             {
2026-06-22T00:46:25.5440343Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T00:46:25.5440464Z               "line": 145
2026-06-22T00:46:25.5440573Z             }
2026-06-22T00:46:25.5440682Z           ]
2026-06-22T00:46:25.5440778Z         },
2026-06-22T00:46:25.5440887Z         "impl": {
2026-06-22T00:46:25.5441002Z           "complete": true,
2026-06-22T00:46:25.5441116Z           "evidence": [
2026-06-22T00:46:25.5441221Z             {
2026-06-22T00:46:25.5441365Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-22T00:46:25.5441479Z               "line": 160
2026-06-22T00:46:25.5441578Z             },
2026-06-22T00:46:25.5441685Z             {
2026-06-22T00:46:25.5441850Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.5441956Z               "line": 200
2026-06-22T00:46:25.5442061Z             },
2026-06-22T00:46:25.5442164Z             {
2026-06-22T00:46:25.5442309Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.5442423Z               "line": 298
2026-06-22T00:46:25.5442531Z             },
2026-06-22T00:46:25.5442641Z             {
2026-06-22T00:46:25.5442782Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-22T00:46:25.5442876Z               "line": 20
2026-06-22T00:46:25.5442977Z             }
2026-06-22T00:46:25.5443078Z           ]
2026-06-22T00:46:25.5443181Z         },
2026-06-22T00:46:25.5443288Z         "int": {
2026-06-22T00:46:25.5443412Z           "complete": false,
2026-06-22T00:46:25.5443520Z           "evidence": []
2026-06-22T00:46:25.5443631Z         },
2026-06-22T00:46:25.5443731Z         "unit": {
2026-06-22T00:46:25.5443849Z           "complete": true,
2026-06-22T00:46:25.5443950Z           "evidence": [
2026-06-22T00:46:25.5444049Z             {
2026-06-22T00:46:25.5444212Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.5444327Z               "line": 937
2026-06-22T00:46:25.5444427Z             },
2026-06-22T00:46:25.5444633Z             {
2026-06-22T00:46:25.5444794Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-22T00:46:25.5444980Z               "line": 88
2026-06-22T00:46:25.5445088Z             },
2026-06-22T00:46:25.5445198Z             {
2026-06-22T00:46:25.5445344Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.5445453Z               "line": 851
2026-06-22T00:46:25.5445558Z             },
2026-06-22T00:46:25.5445664Z             {
2026-06-22T00:46:25.5445811Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.5445930Z               "line": 870
2026-06-22T00:46:25.5446039Z             },
2026-06-22T00:46:25.5446140Z             {
2026-06-22T00:46:25.5446293Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T00:46:25.5446397Z               "line": 279
2026-06-22T00:46:25.5446498Z             },
2026-06-22T00:46:25.5446607Z             {
2026-06-22T00:46:25.5446741Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-22T00:46:25.5446866Z               "line": 82
2026-06-22T00:46:25.5446961Z             },
2026-06-22T00:46:25.5447069Z             {
2026-06-22T00:46:25.5447199Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-22T00:46:25.5447317Z               "line": 99
2026-06-22T00:46:25.5447424Z             },
2026-06-22T00:46:25.5447523Z             {
2026-06-22T00:46:25.5447670Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-22T00:46:25.5447777Z               "line": 119
2026-06-22T00:46:25.5447885Z             }
2026-06-22T00:46:25.5448003Z           ]
2026-06-22T00:46:25.5448147Z         }
2026-06-22T00:46:25.5448251Z       }
2026-06-22T00:46:25.5448351Z     },
2026-06-22T00:46:25.5448452Z     {
2026-06-22T00:46:25.5448599Z       "id": "REQ-HAZARD-REGISTRY-GHOST-ROWS",
2026-06-22T00:46:25.5450036Z       "title": "A dead node identity's registry rows must decay: only the per-(endpoint,node) epoch lease supersedes rows, so without eviction a vanished node's rows are immortal and poison bare-id resolution with phantom AcrossNodes ambiguity — evict rows whose author node has not been heard (admitted inbound feed) within the eviction window; own rows never decay; a revived node re-inserts from its durable epoch within one pump cadence (4.10)",
2026-06-22T00:46:25.5450177Z       "requiredStages": [
2026-06-22T00:46:25.5450281Z         "doc",
2026-06-22T00:46:25.5450391Z         "impl",
2026-06-22T00:46:25.5450489Z         "unit"
2026-06-22T00:46:25.5450588Z       ],
2026-06-22T00:46:25.5450689Z       "stages": {
2026-06-22T00:46:25.5450794Z         "doc": {
2026-06-22T00:46:25.5450908Z           "complete": true,
2026-06-22T00:46:25.5451019Z           "evidence": [
2026-06-22T00:46:25.5451128Z             {
2026-06-22T00:46:25.5451257Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T00:46:25.5451367Z               "line": 157
2026-06-22T00:46:25.5451471Z             }
2026-06-22T00:46:25.5451576Z           ]
2026-06-22T00:46:25.5451676Z         },
2026-06-22T00:46:25.5451776Z         "impl": {
2026-06-22T00:46:25.5451886Z           "complete": true,
2026-06-22T00:46:25.5451987Z           "evidence": [
2026-06-22T00:46:25.5452100Z             {
2026-06-22T00:46:25.5452264Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T00:46:25.5452368Z               "line": 137
2026-06-22T00:46:25.5452477Z             },
2026-06-22T00:46:25.5452584Z             {
2026-06-22T00:46:25.5452734Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.5452845Z               "line": 564
2026-06-22T00:46:25.5452960Z             },
2026-06-22T00:46:25.5453072Z             {
2026-06-22T00:46:25.5453230Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.5453337Z               "line": 571
2026-06-22T00:46:25.5453441Z             },
2026-06-22T00:46:25.5453576Z             {
2026-06-22T00:46:25.5453732Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.5453848Z               "line": 227
2026-06-22T00:46:25.5454066Z             }
2026-06-22T00:46:25.5454163Z           ]
2026-06-22T00:46:25.5454272Z         },
2026-06-22T00:46:25.5454457Z         "int": {
2026-06-22T00:46:25.5454577Z           "complete": false,
2026-06-22T00:46:25.5454682Z           "evidence": []
2026-06-22T00:46:25.5454821Z         },
2026-06-22T00:46:25.5454934Z         "unit": {
2026-06-22T00:46:25.5455049Z           "complete": true,
2026-06-22T00:46:25.5455164Z           "evidence": [
2026-06-22T00:46:25.5455277Z             {
2026-06-22T00:46:25.5455436Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.5455545Z               "line": 1622
2026-06-22T00:46:25.5455653Z             },
2026-06-22T00:46:25.5455758Z             {
2026-06-22T00:46:25.5455918Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.5456032Z               "line": 1680
2026-06-22T00:46:25.5456133Z             },
2026-06-22T00:46:25.5456238Z             {
2026-06-22T00:46:25.5456390Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.5456514Z               "line": 883
2026-06-22T00:46:25.5456628Z             }
2026-06-22T00:46:25.5456739Z           ]
2026-06-22T00:46:25.5456838Z         }
2026-06-22T00:46:25.5463333Z       }
2026-06-22T00:46:25.5463463Z     },
2026-06-22T00:46:25.5463571Z     {
2026-06-22T00:46:25.5463723Z       "id": "REQ-HAZARD-REGISTRY-STALE-CLEAN",
2026-06-22T00:46:25.5463945Z       "title": "Stale registry entries degrade to fallback, never hard-fail (4.3)",
2026-06-22T00:46:25.5464073Z       "requiredStages": [
2026-06-22T00:46:25.5464179Z         "impl",
2026-06-22T00:46:25.5464288Z         "unit"
2026-06-22T00:46:25.5464388Z       ],
2026-06-22T00:46:25.5464541Z       "stages": {
2026-06-22T00:46:25.5464645Z         "doc": {
2026-06-22T00:46:25.5464751Z           "complete": false,
2026-06-22T00:46:25.5464861Z           "evidence": []
2026-06-22T00:46:25.5464964Z         },
2026-06-22T00:46:25.5465071Z         "impl": {
2026-06-22T00:46:25.5465199Z           "complete": true,
2026-06-22T00:46:25.5465304Z           "evidence": [
2026-06-22T00:46:25.5465414Z             {
2026-06-22T00:46:25.5465566Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T00:46:25.5465677Z               "line": 15
2026-06-22T00:46:25.5465772Z             },
2026-06-22T00:46:25.5465871Z             {
2026-06-22T00:46:25.5466016Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T00:46:25.5466119Z               "line": 55
2026-06-22T00:46:25.5466228Z             },
2026-06-22T00:46:25.5466328Z             {
2026-06-22T00:46:25.5466474Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T00:46:25.5466578Z               "line": 66
2026-06-22T00:46:25.5466683Z             },
2026-06-22T00:46:25.5466784Z             {
2026-06-22T00:46:25.5466921Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T00:46:25.5467027Z               "line": 115
2026-06-22T00:46:25.5467127Z             },
2026-06-22T00:46:25.5467236Z             {
2026-06-22T00:46:25.5467375Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T00:46:25.5467489Z               "line": 138
2026-06-22T00:46:25.5467600Z             }
2026-06-22T00:46:25.5467704Z           ]
2026-06-22T00:46:25.5467813Z         },
2026-06-22T00:46:25.5467914Z         "int": {
2026-06-22T00:46:25.5468028Z           "complete": false,
2026-06-22T00:46:25.5468137Z           "evidence": []
2026-06-22T00:46:25.5468248Z         },
2026-06-22T00:46:25.5468352Z         "unit": {
2026-06-22T00:46:25.5468466Z           "complete": true,
2026-06-22T00:46:25.5468577Z           "evidence": [
2026-06-22T00:46:25.5468676Z             {
2026-06-22T00:46:25.5468820Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T00:46:25.5468925Z               "line": 363
2026-06-22T00:46:25.5469128Z             },
2026-06-22T00:46:25.5469238Z             {
2026-06-22T00:46:25.5469362Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T00:46:25.5469476Z               "line": 369
2026-06-22T00:46:25.5469728Z             },
2026-06-22T00:46:25.5469835Z             {
2026-06-22T00:46:25.5470062Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T00:46:25.5470168Z               "line": 383
2026-06-22T00:46:25.5470277Z             },
2026-06-22T00:46:25.5470377Z             {
2026-06-22T00:46:25.5470522Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T00:46:25.5470625Z               "line": 392
2026-06-22T00:46:25.5470735Z             },
2026-06-22T00:46:25.5470836Z             {
2026-06-22T00:46:25.5470983Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T00:46:25.5471103Z               "line": 195
2026-06-22T00:46:25.5471208Z             },
2026-06-22T00:46:25.5471316Z             {
2026-06-22T00:46:25.5471459Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T00:46:25.5471572Z               "line": 208
2026-06-22T00:46:25.5471676Z             },
2026-06-22T00:46:25.5471776Z             {
2026-06-22T00:46:25.5471933Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T00:46:25.5472038Z               "line": 271
2026-06-22T00:46:25.5472153Z             },
2026-06-22T00:46:25.5472248Z             {
2026-06-22T00:46:25.5472391Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T00:46:25.5472501Z               "line": 290
2026-06-22T00:46:25.5472610Z             },
2026-06-22T00:46:25.5472716Z             {
2026-06-22T00:46:25.5472864Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T00:46:25.5472968Z               "line": 319
2026-06-22T00:46:25.5473069Z             }
2026-06-22T00:46:25.5473183Z           ]
2026-06-22T00:46:25.5473278Z         }
2026-06-22T00:46:25.5473389Z       }
2026-06-22T00:46:25.5473497Z     },
2026-06-22T00:46:25.5473602Z     {
2026-06-22T00:46:25.5473741Z       "id": "REQ-HAZARD-RESTART-IDEMPOTENT",
2026-06-22T00:46:25.5474038Z       "title": "Idempotent/exactly-once delivery across brain restart at every broker boundary (codex #14)",
2026-06-22T00:46:25.5474169Z       "requiredStages": [
2026-06-22T00:46:25.5474263Z         "impl",
2026-06-22T00:46:25.5474369Z         "unit",
2026-06-22T00:46:25.5474476Z         "int"
2026-06-22T00:46:25.5474580Z       ],
2026-06-22T00:46:25.5474691Z       "stages": {
2026-06-22T00:46:25.5474786Z         "doc": {
2026-06-22T00:46:25.5474910Z           "complete": false,
2026-06-22T00:46:25.5475020Z           "evidence": []
2026-06-22T00:46:25.5475125Z         },
2026-06-22T00:46:25.5475229Z         "impl": {
2026-06-22T00:46:25.5475340Z           "complete": true,
2026-06-22T00:46:25.5475449Z           "evidence": [
2026-06-22T00:46:25.5475549Z             {
2026-06-22T00:46:25.5475702Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T00:46:25.5475797Z               "line": 480
2026-06-22T00:46:25.5475907Z             },
2026-06-22T00:46:25.5476017Z             {
2026-06-22T00:46:25.5476150Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T00:46:25.5476261Z               "line": 1010
2026-06-22T00:46:25.5476369Z             },
2026-06-22T00:46:25.5476474Z             {
2026-06-22T00:46:25.5476609Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T00:46:25.5476727Z               "line": 1055
2026-06-22T00:46:25.5476835Z             },
2026-06-22T00:46:25.5476940Z             {
2026-06-22T00:46:25.5477086Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T00:46:25.5477200Z               "line": 1080
2026-06-22T00:46:25.5477306Z             },
2026-06-22T00:46:25.5477405Z             {
2026-06-22T00:46:25.5477559Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.5477673Z               "line": 1868
2026-06-22T00:46:25.5477777Z             },
2026-06-22T00:46:25.5477878Z             {
2026-06-22T00:46:25.5478021Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.5478130Z               "line": 2145
2026-06-22T00:46:25.5478226Z             },
2026-06-22T00:46:25.5478331Z             {
2026-06-22T00:46:25.5478564Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.5478674Z               "line": 2276
2026-06-22T00:46:25.5478851Z             },
2026-06-22T00:46:25.5479026Z             {
2026-06-22T00:46:25.5479171Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.5479288Z               "line": 2324
2026-06-22T00:46:25.5479375Z             },
2026-06-22T00:46:25.5479481Z             {
2026-06-22T00:46:25.5479626Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T00:46:25.5479736Z               "line": 46
2026-06-22T00:46:25.5479837Z             },
2026-06-22T00:46:25.5479941Z             {
2026-06-22T00:46:25.5480085Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T00:46:25.5480194Z               "line": 200
2026-06-22T00:46:25.5480298Z             },
2026-06-22T00:46:25.5480404Z             {
2026-06-22T00:46:25.5480538Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T00:46:25.5480646Z               "line": 132
2026-06-22T00:46:25.5480748Z             },
2026-06-22T00:46:25.5480851Z             {
2026-06-22T00:46:25.5481004Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T00:46:25.5481115Z               "line": 137
2026-06-22T00:46:25.5481210Z             },
2026-06-22T00:46:25.5481319Z             {
2026-06-22T00:46:25.5481449Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T00:46:25.5481558Z               "line": 183
2026-06-22T00:46:25.5481668Z             }
2026-06-22T00:46:25.5481763Z           ]
2026-06-22T00:46:25.5481871Z         },
2026-06-22T00:46:25.5481976Z         "int": {
2026-06-22T00:46:25.5482090Z           "complete": true,
2026-06-22T00:46:25.5482198Z           "evidence": [
2026-06-22T00:46:25.5482298Z             {
2026-06-22T00:46:25.5482452Z               "path": "crates/spt-daemon/tests/idempotent.rs",
2026-06-22T00:46:25.5482560Z               "line": 27
2026-06-22T00:46:25.5482670Z             },
2026-06-22T00:46:25.5482776Z             {
2026-06-22T00:46:25.5482947Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-22T00:46:25.5483061Z               "line": 148
2026-06-22T00:46:25.5483165Z             },
2026-06-22T00:46:25.5483271Z             {
2026-06-22T00:46:25.5483409Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-22T00:46:25.5483528Z               "line": 200
2026-06-22T00:46:25.5483629Z             }
2026-06-22T00:46:25.5483728Z           ]
2026-06-22T00:46:25.5483828Z         },
2026-06-22T00:46:25.5483939Z         "unit": {
2026-06-22T00:46:25.5484043Z           "complete": true,
2026-06-22T00:46:25.5484153Z           "evidence": [
2026-06-22T00:46:25.5484259Z             {
2026-06-22T00:46:25.5484400Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T00:46:25.5484511Z               "line": 366
2026-06-22T00:46:25.5484612Z             },
2026-06-22T00:46:25.5484720Z             {
2026-06-22T00:46:25.5484862Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T00:46:25.5484976Z               "line": 398
2026-06-22T00:46:25.5485079Z             },
2026-06-22T00:46:25.5485184Z             {
2026-06-22T00:46:25.5485333Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T00:46:25.5485437Z               "line": 419
2026-06-22T00:46:25.5485538Z             },
2026-06-22T00:46:25.5485647Z             {
2026-06-22T00:46:25.5485789Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T00:46:25.5485900Z               "line": 631
2026-06-22T00:46:25.5486000Z             },
2026-06-22T00:46:25.5486094Z             {
2026-06-22T00:46:25.5486243Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-22T00:46:25.5486357Z               "line": 289
2026-06-22T00:46:25.5486458Z             },
2026-06-22T00:46:25.5486563Z             {
2026-06-22T00:46:25.5486715Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-22T00:46:25.5486821Z               "line": 230
2026-06-22T00:46:25.5486924Z             },
2026-06-22T00:46:25.5487146Z             {
2026-06-22T00:46:25.5487282Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T00:46:25.5487486Z               "line": 526
2026-06-22T00:46:25.5487584Z             },
2026-06-22T00:46:25.5487688Z             {
2026-06-22T00:46:25.5487823Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T00:46:25.5487927Z               "line": 556
2026-06-22T00:46:25.5488037Z             }
2026-06-22T00:46:25.5488133Z           ]
2026-06-22T00:46:25.5488238Z         }
2026-06-22T00:46:25.5488342Z       }
2026-06-22T00:46:25.5488448Z     },
2026-06-22T00:46:25.5488547Z     {
2026-06-22T00:46:25.5488695Z       "id": "REQ-HAZARD-ROLLBACK-STATE-COMPAT",
2026-06-22T00:46:25.5490534Z       "title": "A brain must not irreversibly migrate durable state before update ready-promotion: the readiness-gated auto-rollback (ADR-0018 Q7) spawns the N-1 binary against durable state the new brain may have written, so every pre-ready write must stay N-1-readable (schema migrations gated behind ready-promotion, or written N-1-tolerant/additive). Else the first in-place schema migration silently bricks rollback (KNOWN-HAZARDS 6.8). Free now — a 2026-06-09 audit confirmed zero state-migration code exists; unmintable retroactively once a migration ships.",
2026-06-22T00:46:25.5490668Z       "requiredStages": [
2026-06-22T00:46:25.5490783Z         "doc",
2026-06-22T00:46:25.5490887Z         "impl",
2026-06-22T00:46:25.5490993Z         "unit"
2026-06-22T00:46:25.5491093Z       ],
2026-06-22T00:46:25.5491201Z       "stages": {
2026-06-22T00:46:25.5491308Z         "doc": {
2026-06-22T00:46:25.5491416Z           "complete": true,
2026-06-22T00:46:25.5491526Z           "evidence": [
2026-06-22T00:46:25.5491627Z             {
2026-06-22T00:46:25.5491770Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T00:46:25.5491880Z               "line": 314
2026-06-22T00:46:25.5491976Z             }
2026-06-22T00:46:25.5492083Z           ]
2026-06-22T00:46:25.5492180Z         },
2026-06-22T00:46:25.5492286Z         "impl": {
2026-06-22T00:46:25.5492394Z           "complete": true,
2026-06-22T00:46:25.5492502Z           "evidence": [
2026-06-22T00:46:25.5492612Z             {
2026-06-22T00:46:25.5492777Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-22T00:46:25.5492887Z               "line": 33
2026-06-22T00:46:25.5492988Z             },
2026-06-22T00:46:25.5493086Z             {
2026-06-22T00:46:25.5493245Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-22T00:46:25.5493340Z               "line": 39
2026-06-22T00:46:25.5493444Z             }
2026-06-22T00:46:25.5493546Z           ]
2026-06-22T00:46:25.5493655Z         },
2026-06-22T00:46:25.5493759Z         "int": {
2026-06-22T00:46:25.5493865Z           "complete": false,
2026-06-22T00:46:25.5493969Z           "evidence": []
2026-06-22T00:46:25.5494073Z         },
2026-06-22T00:46:25.5494184Z         "unit": {
2026-06-22T00:46:25.5494293Z           "complete": true,
2026-06-22T00:46:25.5494403Z           "evidence": [
2026-06-22T00:46:25.5494504Z             {
2026-06-22T00:46:25.5494651Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-22T00:46:25.5494761Z               "line": 95
2026-06-22T00:46:25.5494862Z             }
2026-06-22T00:46:25.5494960Z           ]
2026-06-22T00:46:25.5495057Z         }
2026-06-22T00:46:25.5495163Z       }
2026-06-22T00:46:25.5495251Z     },
2026-06-22T00:46:25.5495360Z     {
2026-06-22T00:46:25.5495489Z       "id": "REQ-HAZARD-ROSTER-GHOST",
2026-06-22T00:46:25.5497903Z       "title": "A LOCAL subnet roster entry whose backing perch is erased does NOT keep advertising Active (no phantom perch-less endpoint). `api session-end <id> --erase` removes the perch (owlery dir gone) but the subnet roster (identity/registry/<subnet>.json) keeps the endpoint's instance row ACTIVE with no backing perch; `endpoint stop` says 'address unregistered' yet the line persists; no CLI verb forgets a roster entry, and a hand-edit is re-added by the single-writer daemon advertiser. FIX: daemon-side self-heal — the advertiser DROPS/forgets a LOCAL roster entry whose backing perch no longer exists (stops advertising it Active), and/or a `forget`/evict verb; verify whether the epoch lease eventually evicts it (slow-self-heal) vs a real leak and scope accordingly. doyle secondary finding (perri). (post-v0.10.0)",
2026-06-22T00:46:25.5498234Z       "requiredStages": [
2026-06-22T00:46:25.5498335Z         "impl",
2026-06-22T00:46:25.5498441Z         "unit"
2026-06-22T00:46:25.5498545Z       ],
2026-06-22T00:46:25.5498650Z       "stages": {
2026-06-22T00:46:25.5498750Z         "doc": {
2026-06-22T00:46:25.5498864Z           "complete": false,
2026-06-22T00:46:25.5499050Z           "evidence": []
2026-06-22T00:46:25.5499150Z         },
2026-06-22T00:46:25.5499251Z         "impl": {
2026-06-22T00:46:25.5499355Z           "complete": true,
2026-06-22T00:46:25.5499470Z           "evidence": [
2026-06-22T00:46:25.5499575Z             {
2026-06-22T00:46:25.5499732Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.5499851Z               "line": 488
2026-06-22T00:46:25.5499957Z             }
2026-06-22T00:46:25.5500056Z           ]
2026-06-22T00:46:25.5500157Z         },
2026-06-22T00:46:25.5500258Z         "int": {
2026-06-22T00:46:25.5500366Z           "complete": false,
2026-06-22T00:46:25.5500471Z           "evidence": []
2026-06-22T00:46:25.5500578Z         },
2026-06-22T00:46:25.5500685Z         "unit": {
2026-06-22T00:46:25.5500798Z           "complete": true,
2026-06-22T00:46:25.5500914Z           "evidence": [
2026-06-22T00:46:25.5501014Z             {
2026-06-22T00:46:25.5501171Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.5501272Z               "line": 1466
2026-06-22T00:46:25.5501381Z             }
2026-06-22T00:46:25.5501486Z           ]
2026-06-22T00:46:25.5501577Z         }
2026-06-22T00:46:25.5501677Z       }
2026-06-22T00:46:25.5501776Z     },
2026-06-22T00:46:25.5501882Z     {
2026-06-22T00:46:25.5502006Z       "id": "REQ-HAZARD-SELF-ELEVATE",
2026-06-22T00:46:25.5504154Z       "title": "Self-elevation (REQ-ELEVATE-1) re-runs the EXACT original invocation with the binary's ABSOLUTE exe path — never widening privilege scope, never adding/altering args, never via a PATH-resolved bare name, never via a shell-interpolated command string (argv-array only, no `sh -c`); the elevated child drops state back to the user (composes with the 5.7 de-elevation) and NEVER re-elevates (loop-safe: decide_elevation_path returns AlreadyElevated whenever the process is already Elevated, on every OS). The user's UAC/polkit/sudo prompt is the only consent gate — we never bypass it; the print-hint floor prints the absolute-path command too. The unprivileged parent never depends on (pipes/captures) the privileged child's stdout.",
2026-06-22T00:46:25.5504281Z       "requiredStages": [
2026-06-22T00:46:25.5504382Z         "unit"
2026-06-22T00:46:25.5504477Z       ],
2026-06-22T00:46:25.5504587Z       "stages": {
2026-06-22T00:46:25.5504691Z         "doc": {
2026-06-22T00:46:25.5504806Z           "complete": false,
2026-06-22T00:46:25.5504916Z           "evidence": []
2026-06-22T00:46:25.5505026Z         },
2026-06-22T00:46:25.5505126Z         "impl": {
2026-06-22T00:46:25.5505240Z           "complete": true,
2026-06-22T00:46:25.5505356Z           "evidence": [
2026-06-22T00:46:25.5505455Z             {
2026-06-22T00:46:25.5505578Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5505689Z               "line": 3520
2026-06-22T00:46:25.5505798Z             },
2026-06-22T00:46:25.5505897Z             {
2026-06-22T00:46:25.5506020Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5506134Z               "line": 3572
2026-06-22T00:46:25.5506237Z             },
2026-06-22T00:46:25.5506343Z             {
2026-06-22T00:46:25.5506472Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5506585Z               "line": 3617
2026-06-22T00:46:25.5506692Z             },
2026-06-22T00:46:25.5506905Z             {
2026-06-22T00:46:25.5507049Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T00:46:25.5507253Z               "line": 92
2026-06-22T00:46:25.5507359Z             },
2026-06-22T00:46:25.5507468Z             {
2026-06-22T00:46:25.5507602Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T00:46:25.5507716Z               "line": 148
2026-06-22T00:46:25.5507811Z             },
2026-06-22T00:46:25.5507912Z             {
2026-06-22T00:46:25.5508044Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T00:46:25.5508150Z               "line": 192
2026-06-22T00:46:25.5508261Z             },
2026-06-22T00:46:25.5508364Z             {
2026-06-22T00:46:25.5508496Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T00:46:25.5508602Z               "line": 200
2026-06-22T00:46:25.5508700Z             },
2026-06-22T00:46:25.5508804Z             {
2026-06-22T00:46:25.5509033Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T00:46:25.5509147Z               "line": 211
2026-06-22T00:46:25.5509244Z             },
2026-06-22T00:46:25.5509353Z             {
2026-06-22T00:46:25.5509501Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T00:46:25.5509601Z               "line": 265
2026-06-22T00:46:25.5509705Z             },
2026-06-22T00:46:25.5509811Z             {
2026-06-22T00:46:25.5509939Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T00:46:25.5510039Z               "line": 279
2026-06-22T00:46:25.5510140Z             }
2026-06-22T00:46:25.5510235Z           ]
2026-06-22T00:46:25.5510330Z         },
2026-06-22T00:46:25.5510435Z         "int": {
2026-06-22T00:46:25.5510541Z           "complete": false,
2026-06-22T00:46:25.5510654Z           "evidence": []
2026-06-22T00:46:25.5510755Z         },
2026-06-22T00:46:25.5510865Z         "unit": {
2026-06-22T00:46:25.5510983Z           "complete": true,
2026-06-22T00:46:25.5511094Z           "evidence": [
2026-06-22T00:46:25.5511199Z             {
2026-06-22T00:46:25.5511331Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T00:46:25.5511435Z               "line": 419
2026-06-22T00:46:25.5511546Z             },
2026-06-22T00:46:25.5511645Z             {
2026-06-22T00:46:25.5511789Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T00:46:25.5511894Z               "line": 470
2026-06-22T00:46:25.5512002Z             },
2026-06-22T00:46:25.5512100Z             {
2026-06-22T00:46:25.5512237Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T00:46:25.5512341Z               "line": 499
2026-06-22T00:46:25.5512442Z             },
2026-06-22T00:46:25.5512547Z             {
2026-06-22T00:46:25.5512670Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T00:46:25.5512776Z               "line": 526
2026-06-22T00:46:25.5512880Z             }
2026-06-22T00:46:25.5512985Z           ]
2026-06-22T00:46:25.5513091Z         }
2026-06-22T00:46:25.5513195Z       }
2026-06-22T00:46:25.5513295Z     },
2026-06-22T00:46:25.5513387Z     {
2026-06-22T00:46:25.5513533Z       "id": "REQ-HAZARD-SINGLE-PATH-SOURCE",
2026-06-22T00:46:25.5513737Z       "title": "Single path/registry source of truth; no layout ambiguity (6.1)",
2026-06-22T00:46:25.5513855Z       "requiredStages": [
2026-06-22T00:46:25.5513964Z         "impl",
2026-06-22T00:46:25.5514070Z         "unit"
2026-06-22T00:46:25.5514169Z       ],
2026-06-22T00:46:25.5514274Z       "stages": {
2026-06-22T00:46:25.5514389Z         "doc": {
2026-06-22T00:46:25.5514503Z           "complete": false,
2026-06-22T00:46:25.5514612Z           "evidence": []
2026-06-22T00:46:25.5514723Z         },
2026-06-22T00:46:25.5514827Z         "impl": {
2026-06-22T00:46:25.5514947Z           "complete": true,
2026-06-22T00:46:25.5515047Z           "evidence": [
2026-06-22T00:46:25.5515161Z             {
2026-06-22T00:46:25.5515319Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T00:46:25.5515428Z               "line": 62
2026-06-22T00:46:25.5515537Z             },
2026-06-22T00:46:25.5515643Z             {
2026-06-22T00:46:25.5515935Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T00:46:25.5516138Z               "line": 71
2026-06-22T00:46:25.5516240Z             },
2026-06-22T00:46:25.5516349Z             {
2026-06-22T00:46:25.5516504Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T00:46:25.5516619Z               "line": 80
2026-06-22T00:46:25.5516722Z             },
2026-06-22T00:46:25.5516836Z             {
2026-06-22T00:46:25.5516979Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T00:46:25.5517093Z               "line": 88
2026-06-22T00:46:25.5517199Z             },
2026-06-22T00:46:25.5517303Z             {
2026-06-22T00:46:25.5517451Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T00:46:25.5517562Z               "line": 33
2026-06-22T00:46:25.5517667Z             },
2026-06-22T00:46:25.5517770Z             {
2026-06-22T00:46:25.5517915Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T00:46:25.5518037Z               "line": 65
2026-06-22T00:46:25.5518148Z             },
2026-06-22T00:46:25.5518257Z             {
2026-06-22T00:46:25.5518395Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T00:46:25.5518515Z               "line": 74
2026-06-22T00:46:25.5518605Z             },
2026-06-22T00:46:25.5518705Z             {
2026-06-22T00:46:25.5518840Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T00:46:25.5519024Z               "line": 93
2026-06-22T00:46:25.5519128Z             },
2026-06-22T00:46:25.5519228Z             {
2026-06-22T00:46:25.5519369Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T00:46:25.5519470Z               "line": 102
2026-06-22T00:46:25.5519580Z             },
2026-06-22T00:46:25.5519679Z             {
2026-06-22T00:46:25.5519818Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T00:46:25.5519932Z               "line": 111
2026-06-22T00:46:25.5520027Z             },
2026-06-22T00:46:25.5520129Z             {
2026-06-22T00:46:25.5520261Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T00:46:25.5520376Z               "line": 122
2026-06-22T00:46:25.5520485Z             },
2026-06-22T00:46:25.5520594Z             {
2026-06-22T00:46:25.5520734Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T00:46:25.5520838Z               "line": 140
2026-06-22T00:46:25.5520947Z             },
2026-06-22T00:46:25.5521049Z             {
2026-06-22T00:46:25.5521181Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T00:46:25.5521291Z               "line": 149
2026-06-22T00:46:25.5521397Z             },
2026-06-22T00:46:25.5521495Z             {
2026-06-22T00:46:25.5521625Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T00:46:25.5521745Z               "line": 158
2026-06-22T00:46:25.5521838Z             },
2026-06-22T00:46:25.5521947Z             {
2026-06-22T00:46:25.5522087Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T00:46:25.5522196Z               "line": 169
2026-06-22T00:46:25.5522306Z             },
2026-06-22T00:46:25.5522406Z             {
2026-06-22T00:46:25.5522549Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T00:46:25.5522660Z               "line": 177
2026-06-22T00:46:25.5522769Z             },
2026-06-22T00:46:25.5522873Z             {
2026-06-22T00:46:25.5522998Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T00:46:25.5523107Z               "line": 186
2026-06-22T00:46:25.5523207Z             },
2026-06-22T00:46:25.5523313Z             {
2026-06-22T00:46:25.5523445Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T00:46:25.5523565Z               "line": 195
2026-06-22T00:46:25.5523665Z             },
2026-06-22T00:46:25.5523769Z             {
2026-06-22T00:46:25.5523904Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T00:46:25.5524013Z               "line": 204
2026-06-22T00:46:25.5524112Z             },
2026-06-22T00:46:25.5524221Z             {
2026-06-22T00:46:25.5524462Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T00:46:25.5524572Z               "line": 216
2026-06-22T00:46:25.5524753Z             },
2026-06-22T00:46:25.5524858Z             {
2026-06-22T00:46:25.5524987Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T00:46:25.5525096Z               "line": 223
2026-06-22T00:46:25.5525197Z             },
2026-06-22T00:46:25.5525297Z             {
2026-06-22T00:46:25.5525434Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T00:46:25.5525536Z               "line": 232
2026-06-22T00:46:25.5525645Z             },
2026-06-22T00:46:25.5525749Z             {
2026-06-22T00:46:25.5525893Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T00:46:25.5526003Z               "line": 239
2026-06-22T00:46:25.5526112Z             },
2026-06-22T00:46:25.5526223Z             {
2026-06-22T00:46:25.5526356Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T00:46:25.5526471Z               "line": 306
2026-06-22T00:46:25.5526575Z             },
2026-06-22T00:46:25.5526675Z             {
2026-06-22T00:46:25.5526800Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T00:46:25.5526913Z               "line": 318
2026-06-22T00:46:25.5527017Z             },
2026-06-22T00:46:25.5527122Z             {
2026-06-22T00:46:25.5527292Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T00:46:25.5527444Z               "line": 405
2026-06-22T00:46:25.5527554Z             }
2026-06-22T00:46:25.5527658Z           ]
2026-06-22T00:46:25.5527769Z         },
2026-06-22T00:46:25.5527868Z         "int": {
2026-06-22T00:46:25.5527973Z           "complete": false,
2026-06-22T00:46:25.5528079Z           "evidence": []
2026-06-22T00:46:25.5528169Z         },
2026-06-22T00:46:25.5528278Z         "unit": {
2026-06-22T00:46:25.5528388Z           "complete": true,
2026-06-22T00:46:25.5528493Z           "evidence": [
2026-06-22T00:46:25.5528603Z             {
2026-06-22T00:46:25.5528732Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T00:46:25.5528846Z               "line": 487
2026-06-22T00:46:25.5529137Z             },
2026-06-22T00:46:25.5529237Z             {
2026-06-22T00:46:25.5529367Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T00:46:25.5529480Z               "line": 528
2026-06-22T00:46:25.5529579Z             },
2026-06-22T00:46:25.5529698Z             {
2026-06-22T00:46:25.5529849Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T00:46:25.5529962Z               "line": 541
2026-06-22T00:46:25.5530069Z             },
2026-06-22T00:46:25.5530177Z             {
2026-06-22T00:46:25.5530316Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T00:46:25.5530435Z               "line": 627
2026-06-22T00:46:25.5530534Z             }
2026-06-22T00:46:25.5530641Z           ]
2026-06-22T00:46:25.5530731Z         }
2026-06-22T00:46:25.5530835Z       }
2026-06-22T00:46:25.5530941Z     },
2026-06-22T00:46:25.5531041Z     {
2026-06-22T00:46:25.5531178Z       "id": "REQ-HAZARD-SOFT-CLEANUP",
2026-06-22T00:46:25.5531398Z       "title": "Soft-cleanup preserves state, removes only the ready marker (6.2)",
2026-06-22T00:46:25.5531517Z       "requiredStages": [
2026-06-22T00:46:25.5531623Z         "impl",
2026-06-22T00:46:25.5531731Z         "unit"
2026-06-22T00:46:25.5531837Z       ],
2026-06-22T00:46:25.5531948Z       "stages": {
2026-06-22T00:46:25.5532056Z         "doc": {
2026-06-22T00:46:25.5532166Z           "complete": false,
2026-06-22T00:46:25.5532282Z           "evidence": []
2026-06-22T00:46:25.5532384Z         },
2026-06-22T00:46:25.5532498Z         "impl": {
2026-06-22T00:46:25.5532609Z           "complete": true,
2026-06-22T00:46:25.5532713Z           "evidence": [
2026-06-22T00:46:25.5532813Z             {
2026-06-22T00:46:25.5532943Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T00:46:25.5533051Z               "line": 175
2026-06-22T00:46:25.5533146Z             },
2026-06-22T00:46:25.5533276Z             {
2026-06-22T00:46:25.5533529Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.5533629Z               "line": 171
2026-06-22T00:46:25.5533901Z             }
2026-06-22T00:46:25.5534001Z           ]
2026-06-22T00:46:25.5534105Z         },
2026-06-22T00:46:25.5534207Z         "int": {
2026-06-22T00:46:25.5534320Z           "complete": false,
2026-06-22T00:46:25.5534430Z           "evidence": []
2026-06-22T00:46:25.5534527Z         },
2026-06-22T00:46:25.5534639Z         "unit": {
2026-06-22T00:46:25.5534752Z           "complete": true,
2026-06-22T00:46:25.5534858Z           "evidence": [
2026-06-22T00:46:25.5534965Z             {
2026-06-22T00:46:25.5535103Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T00:46:25.5535209Z               "line": 297
2026-06-22T00:46:25.5535318Z             },
2026-06-22T00:46:25.5535418Z             {
2026-06-22T00:46:25.5535557Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.5535666Z               "line": 836
2026-06-22T00:46:25.5535772Z             },
2026-06-22T00:46:25.5535881Z             {
2026-06-22T00:46:25.5536028Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.5536143Z               "line": 849
2026-06-22T00:46:25.5536252Z             }
2026-06-22T00:46:25.5536357Z           ]
2026-06-22T00:46:25.5536463Z         }
2026-06-22T00:46:25.5536567Z       }
2026-06-22T00:46:25.5536667Z     },
2026-06-22T00:46:25.5536773Z     {
2026-06-22T00:46:25.5536906Z       "id": "REQ-HAZARD-STALE-INDEX-LOCK",
2026-06-22T00:46:25.5537065Z       "title": "Sweep stale lockfiles on daemon boot (1.3)",
2026-06-22T00:46:25.5537172Z       "requiredStages": [
2026-06-22T00:46:25.5537283Z         "impl",
2026-06-22T00:46:25.5537389Z         "unit"
2026-06-22T00:46:25.5537492Z       ],
2026-06-22T00:46:25.5537596Z       "stages": {
2026-06-22T00:46:25.5537697Z         "doc": {
2026-06-22T00:46:25.5537818Z           "complete": false,
2026-06-22T00:46:25.5537922Z           "evidence": []
2026-06-22T00:46:25.5538028Z         },
2026-06-22T00:46:25.5538133Z         "impl": {
2026-06-22T00:46:25.5538237Z           "complete": true,
2026-06-22T00:46:25.5538357Z           "evidence": [
2026-06-22T00:46:25.5538458Z             {
2026-06-22T00:46:25.5538605Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.5538710Z               "line": 116
2026-06-22T00:46:25.5538815Z             },
2026-06-22T00:46:25.5538915Z             {
2026-06-22T00:46:25.5539158Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T00:46:25.5539268Z               "line": 507
2026-06-22T00:46:25.5539359Z             }
2026-06-22T00:46:25.5539468Z           ]
2026-06-22T00:46:25.5539559Z         },
2026-06-22T00:46:25.5539669Z         "int": {
2026-06-22T00:46:25.5539772Z           "complete": false,
2026-06-22T00:46:25.5539879Z           "evidence": []
2026-06-22T00:46:25.5539988Z         },
2026-06-22T00:46:25.5540096Z         "unit": {
2026-06-22T00:46:25.5540210Z           "complete": true,
2026-06-22T00:46:25.5540329Z           "evidence": [
2026-06-22T00:46:25.5540437Z             {
2026-06-22T00:46:25.5540580Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T00:46:25.5540696Z               "line": 541
2026-06-22T00:46:25.5540804Z             }
2026-06-22T00:46:25.5540900Z           ]
2026-06-22T00:46:25.5540995Z         }
2026-06-22T00:46:25.5541094Z       }
2026-06-22T00:46:25.5541196Z     },
2026-06-22T00:46:25.5541291Z     {
2026-06-22T00:46:25.5541443Z       "id": "REQ-HAZARD-STALE-SIGNOFF-SENTINEL",
2026-06-22T00:46:25.5541639Z       "title": "Stale signoff sentinel does not kill a fresh start (3.2)",
2026-06-22T00:46:25.5541748Z       "requiredStages": [
2026-06-22T00:46:25.5541859Z         "impl",
2026-06-22T00:46:25.5541958Z         "unit"
2026-06-22T00:46:25.5542063Z       ],
2026-06-22T00:46:25.5542164Z       "stages": {
2026-06-22T00:46:25.5542273Z         "doc": {
2026-06-22T00:46:25.5542382Z           "complete": false,
2026-06-22T00:46:25.5542489Z           "evidence": []
2026-06-22T00:46:25.5542697Z         },
2026-06-22T00:46:25.5542804Z         "impl": {
2026-06-22T00:46:25.5543006Z           "complete": true,
2026-06-22T00:46:25.5543111Z           "evidence": [
2026-06-22T00:46:25.5543217Z             {
2026-06-22T00:46:25.5543373Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T00:46:25.5543484Z               "line": 552
2026-06-22T00:46:25.5543589Z             },
2026-06-22T00:46:25.5543693Z             {
2026-06-22T00:46:25.5543841Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T00:46:25.5543945Z               "line": 28
2026-06-22T00:46:25.5544055Z             }
2026-06-22T00:46:25.5544156Z           ]
2026-06-22T00:46:25.5544256Z         },
2026-06-22T00:46:25.5544365Z         "int": {
2026-06-22T00:46:25.5544480Z           "complete": false,
2026-06-22T00:46:25.5544594Z           "evidence": []
2026-06-22T00:46:25.5544695Z         },
2026-06-22T00:46:25.5544800Z         "unit": {
2026-06-22T00:46:25.5544913Z           "complete": true,
2026-06-22T00:46:25.5545029Z           "evidence": [
2026-06-22T00:46:25.5545138Z             {
2026-06-22T00:46:25.5545275Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T00:46:25.5548540Z               "line": 229
2026-06-22T00:46:25.5548665Z             }
2026-06-22T00:46:25.5548774Z           ]
2026-06-22T00:46:25.5548869Z         }
2026-06-22T00:46:25.5549060Z       }
2026-06-22T00:46:25.5549165Z     },
2026-06-22T00:46:25.5549266Z     {
2026-06-22T00:46:25.5549408Z       "id": "REQ-HAZARD-STDIN-SESSION-ID",
2026-06-22T00:46:25.5549571Z       "title": "Stdin session_id precedence over env (2.2)",
2026-06-22T00:46:25.5549699Z       "requiredStages": [],
2026-06-22T00:46:25.5549804Z       "stages": {
2026-06-22T00:46:25.5549904Z         "doc": {
2026-06-22T00:46:25.5550018Z           "complete": false,
2026-06-22T00:46:25.5550119Z           "evidence": []
2026-06-22T00:46:25.5550229Z         },
2026-06-22T00:46:25.5550323Z         "impl": {
2026-06-22T00:46:25.5550458Z           "complete": false,
2026-06-22T00:46:25.5550563Z           "evidence": []
2026-06-22T00:46:25.5550666Z         },
2026-06-22T00:46:25.5550770Z         "int": {
2026-06-22T00:46:25.5550880Z           "complete": false,
2026-06-22T00:46:25.5550993Z           "evidence": []
2026-06-22T00:46:25.5551092Z         },
2026-06-22T00:46:25.5551203Z         "unit": {
2026-06-22T00:46:25.5551303Z           "complete": false,
2026-06-22T00:46:25.5551412Z           "evidence": []
2026-06-22T00:46:25.5551513Z         }
2026-06-22T00:46:25.5551617Z       }
2026-06-22T00:46:25.5551722Z     },
2026-06-22T00:46:25.5551823Z     {
2026-06-22T00:46:25.5551956Z       "id": "REQ-HAZARD-SUBPROCESS-TIMEOUT",
2026-06-22T00:46:25.5552138Z       "title": "Every harness/git subprocess has a timeout (5.3)",
2026-06-22T00:46:25.5552247Z       "requiredStages": [
2026-06-22T00:46:25.5552356Z         "impl",
2026-06-22T00:46:25.5552462Z         "unit"
2026-06-22T00:46:25.5552562Z       ],
2026-06-22T00:46:25.5552666Z       "stages": {
2026-06-22T00:46:25.5552772Z         "doc": {
2026-06-22T00:46:25.5552875Z           "complete": false,
2026-06-22T00:46:25.5552991Z           "evidence": []
2026-06-22T00:46:25.5553087Z         },
2026-06-22T00:46:25.5553195Z         "impl": {
2026-06-22T00:46:25.5553306Z           "complete": true,
2026-06-22T00:46:25.5553416Z           "evidence": [
2026-06-22T00:46:25.5553519Z             {
2026-06-22T00:46:25.5553662Z               "path": "crates/spt-live/src/turn.rs",
2026-06-22T00:46:25.5553777Z               "line": 19
2026-06-22T00:46:25.5553871Z             },
2026-06-22T00:46:25.5553966Z             {
2026-06-22T00:46:25.5554115Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T00:46:25.5554214Z               "line": 463
2026-06-22T00:46:25.5554311Z             },
2026-06-22T00:46:25.5554420Z             {
2026-06-22T00:46:25.5554558Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T00:46:25.5554664Z               "line": 499
2026-06-22T00:46:25.5554925Z             },
2026-06-22T00:46:25.5555031Z             {
2026-06-22T00:46:25.5555163Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T00:46:25.5555370Z               "line": 547
2026-06-22T00:46:25.5555478Z             },
2026-06-22T00:46:25.5555584Z             {
2026-06-22T00:46:25.5555726Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T00:46:25.5555821Z               "line": 15
2026-06-22T00:46:25.5555925Z             },
2026-06-22T00:46:25.5556030Z             {
2026-06-22T00:46:25.5556171Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T00:46:25.5556281Z               "line": 48
2026-06-22T00:46:25.5556386Z             },
2026-06-22T00:46:25.5556495Z             {
2026-06-22T00:46:25.5556634Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T00:46:25.5556748Z               "line": 119
2026-06-22T00:46:25.5556843Z             },
2026-06-22T00:46:25.5556949Z             {
2026-06-22T00:46:25.5557077Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5557197Z               "line": 3948
2026-06-22T00:46:25.5557297Z             }
2026-06-22T00:46:25.5557401Z           ]
2026-06-22T00:46:25.5557507Z         },
2026-06-22T00:46:25.5557607Z         "int": {
2026-06-22T00:46:25.5557725Z           "complete": false,
2026-06-22T00:46:25.5557836Z           "evidence": []
2026-06-22T00:46:25.5557936Z         },
2026-06-22T00:46:25.5558036Z         "unit": {
2026-06-22T00:46:25.5558146Z           "complete": true,
2026-06-22T00:46:25.5558260Z           "evidence": [
2026-06-22T00:46:25.5558360Z             {
2026-06-22T00:46:25.5558509Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T00:46:25.5558626Z               "line": 765
2026-06-22T00:46:25.5558721Z             },
2026-06-22T00:46:25.5558826Z             {
2026-06-22T00:46:25.5559029Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T00:46:25.5559148Z               "line": 165
2026-06-22T00:46:25.5559244Z             },
2026-06-22T00:46:25.5559362Z             {
2026-06-22T00:46:25.5559501Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T00:46:25.5559615Z               "line": 175
2026-06-22T00:46:25.5559720Z             }
2026-06-22T00:46:25.5559821Z           ]
2026-06-22T00:46:25.5559925Z         }
2026-06-22T00:46:25.5560025Z       }
2026-06-22T00:46:25.5560126Z     },
2026-06-22T00:46:25.5560231Z     {
2026-06-22T00:46:25.5560359Z       "id": "REQ-HAZARD-SUDO-SECURE-PATH",
2026-06-22T00:46:25.5561278Z       "title": "Elevation guidance on Unix names the binary's ABSOLUTE path under sudo (a user-local install ~/.local/bin · ~/.cargo/bin is not on sudo's secure_path, so bare `sudo spt` dies 'command not found'); gated commands auto-elevate on an interactive TTY, else print the runnable hint (5.10)",
2026-06-22T00:46:25.5561402Z       "requiredStages": [
2026-06-22T00:46:25.5561505Z         "impl",
2026-06-22T00:46:25.5561614Z         "unit"
2026-06-22T00:46:25.5561720Z       ],
2026-06-22T00:46:25.5561825Z       "stages": {
2026-06-22T00:46:25.5561929Z         "doc": {
2026-06-22T00:46:25.5562035Z           "complete": false,
2026-06-22T00:46:25.5562154Z           "evidence": []
2026-06-22T00:46:25.5562248Z         },
2026-06-22T00:46:25.5562359Z         "impl": {
2026-06-22T00:46:25.5562473Z           "complete": true,
2026-06-22T00:46:25.5562577Z           "evidence": [
2026-06-22T00:46:25.5562683Z             {
2026-06-22T00:46:25.5562821Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T00:46:25.5562931Z               "line": 192
2026-06-22T00:46:25.5563036Z             },
2026-06-22T00:46:25.5563141Z             {
2026-06-22T00:46:25.5563270Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T00:46:25.5563384Z               "line": 279
2026-06-22T00:46:25.5563484Z             }
2026-06-22T00:46:25.5563585Z           ]
2026-06-22T00:46:25.5563685Z         },
2026-06-22T00:46:25.5563794Z         "int": {
2026-06-22T00:46:25.5563914Z           "complete": false,
2026-06-22T00:46:25.5564131Z           "evidence": []
2026-06-22T00:46:25.5564231Z         },
2026-06-22T00:46:25.5564337Z         "unit": {
2026-06-22T00:46:25.5564551Z           "complete": true,
2026-06-22T00:46:25.5564661Z           "evidence": [
2026-06-22T00:46:25.5564765Z             {
2026-06-22T00:46:25.5564895Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T00:46:25.5564999Z               "line": 470
2026-06-22T00:46:25.5565103Z             },
2026-06-22T00:46:25.5565205Z             {
2026-06-22T00:46:25.5565328Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T00:46:25.5565437Z               "line": 526
2026-06-22T00:46:25.5565534Z             }
2026-06-22T00:46:25.5565638Z           ]
2026-06-22T00:46:25.5565733Z         }
2026-06-22T00:46:25.5565840Z       }
2026-06-22T00:46:25.5565939Z     },
2026-06-22T00:46:25.5566044Z     {
2026-06-22T00:46:25.5566169Z       "id": "REQ-HAZARD-TEMPLATE-ARGV-FILL",
2026-06-22T00:46:25.5570071Z       "title": "Command-template substitution fills argv ELEMENTS, not a re-tokenized string: spt-core currently `fill_template`s {key} values INTO the command STRING and THEN `tokenize`s the filled string (runtime.rs:94/122), so a multi-word {key} value whitespace-SPLITS into multiple argv tokens unless the adapter hand-quotes the placeholder, and a value containing a `\"` (or `;`) injects/breaks tokenization (shell-injection-adjacent). A filled value MUST become exactly ONE argv element regardless of spaces/quotes in the value. Fix: tokenize the TEMPLATE into argv FIRST, then `fill_template` EACH token, so a `{key}` slot resolves to a single element and the value never participates in tokenization (no whitespace-split, no quote/semicolon injection); preserve the missing-key / empty-command errors and `{{`/`}}` non-interpretation. perri's F-009 (v0.8.1 dogfood, argv-capture-confirmed): a multi-word `{psyche_prompt}` = \"PSYCHE REVIVAL time: epoch-ms:… incoming event: (none)\" arrived as argv[6..12] (7 stray tokens), the harness runner strict-parsed `--prompt` against the 2nd word, exited 2 within ~1s → phantom hosted perch. Applies to EVERY [session.<role>] template (psyche_init, extractor, notif, …); digest survives today only because its fills ({session_id}/{source}) are single-token.",
2026-06-22T00:46:25.5570228Z       "requiredStages": [
2026-06-22T00:46:25.5570334Z         "impl",
2026-06-22T00:46:25.5570438Z         "unit",
2026-06-22T00:46:25.5570537Z         "int"
2026-06-22T00:46:25.5570634Z       ],
2026-06-22T00:46:25.5570738Z       "stages": {
2026-06-22T00:46:25.5570838Z         "doc": {
2026-06-22T00:46:25.5570953Z           "complete": false,
2026-06-22T00:46:25.5571067Z           "evidence": []
2026-06-22T00:46:25.5571172Z         },
2026-06-22T00:46:25.5571278Z         "impl": {
2026-06-22T00:46:25.5571387Z           "complete": true,
2026-06-22T00:46:25.5571492Z           "evidence": [
2026-06-22T00:46:25.5571593Z             {
2026-06-22T00:46:25.5571744Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T00:46:25.5571862Z               "line": 116
2026-06-22T00:46:25.5571968Z             },
2026-06-22T00:46:25.5572065Z             {
2026-06-22T00:46:25.5572208Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T00:46:25.5572319Z               "line": 132
2026-06-22T00:46:25.5572423Z             },
2026-06-22T00:46:25.5572523Z             {
2026-06-22T00:46:25.5572676Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T00:46:25.5572785Z               "line": 434
2026-06-22T00:46:25.5572891Z             },
2026-06-22T00:46:25.5572991Z             {
2026-06-22T00:46:25.5573142Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T00:46:25.5573244Z               "line": 139
2026-06-22T00:46:25.5573348Z             },
2026-06-22T00:46:25.5573457Z             {
2026-06-22T00:46:25.5573591Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T00:46:25.5573701Z               "line": 326
2026-06-22T00:46:25.5573806Z             },
2026-06-22T00:46:25.5574020Z             {
2026-06-22T00:46:25.5574150Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T00:46:25.5574344Z               "line": 555
2026-06-22T00:46:25.5574450Z             }
2026-06-22T00:46:25.5574555Z           ]
2026-06-22T00:46:25.5574658Z         },
2026-06-22T00:46:25.5574763Z         "int": {
2026-06-22T00:46:25.5574878Z           "complete": true,
2026-06-22T00:46:25.5574987Z           "evidence": [
2026-06-22T00:46:25.5575087Z             {
2026-06-22T00:46:25.5575250Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-22T00:46:25.5575358Z               "line": 32
2026-06-22T00:46:25.5575465Z             }
2026-06-22T00:46:25.5575564Z           ]
2026-06-22T00:46:25.5575668Z         },
2026-06-22T00:46:25.5575780Z         "unit": {
2026-06-22T00:46:25.5575884Z           "complete": true,
2026-06-22T00:46:25.5575993Z           "evidence": [
2026-06-22T00:46:25.5576094Z             {
2026-06-22T00:46:25.5576251Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T00:46:25.5576375Z               "line": 625
2026-06-22T00:46:25.5576480Z             },
2026-06-22T00:46:25.5576579Z             {
2026-06-22T00:46:25.5576724Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T00:46:25.5576842Z               "line": 646
2026-06-22T00:46:25.5576941Z             },
2026-06-22T00:46:25.5577041Z             {
2026-06-22T00:46:25.5577183Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T00:46:25.5577286Z               "line": 662
2026-06-22T00:46:25.5577377Z             },
2026-06-22T00:46:25.5577469Z             {
2026-06-22T00:46:25.5577611Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T00:46:25.5577711Z               "line": 680
2026-06-22T00:46:25.5577807Z             },
2026-06-22T00:46:25.5577911Z             {
2026-06-22T00:46:25.5578055Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T00:46:25.5578164Z               "line": 704
2026-06-22T00:46:25.5578264Z             }
2026-06-22T00:46:25.5578370Z           ]
2026-06-22T00:46:25.5578470Z         }
2026-06-22T00:46:25.5578574Z       }
2026-06-22T00:46:25.5578689Z     },
2026-06-22T00:46:25.5578784Z     {
2026-06-22T00:46:25.5578922Z       "id": "REQ-HAZARD-UNC-PATH-STRIP",
2026-06-22T00:46:25.5579170Z       "title": "Strip Windows UNC prefix on serialized paths (5.4)",
2026-06-22T00:46:25.5579281Z       "requiredStages": [
2026-06-22T00:46:25.5579385Z         "impl",
2026-06-22T00:46:25.5579490Z         "unit"
2026-06-22T00:46:25.5579596Z       ],
2026-06-22T00:46:25.5579705Z       "stages": {
2026-06-22T00:46:25.5579808Z         "doc": {
2026-06-22T00:46:25.5579913Z           "complete": false,
2026-06-22T00:46:25.5580036Z           "evidence": []
2026-06-22T00:46:25.5580134Z         },
2026-06-22T00:46:25.5580235Z         "impl": {
2026-06-22T00:46:25.5580350Z           "complete": true,
2026-06-22T00:46:25.5580454Z           "evidence": [
2026-06-22T00:46:25.5580560Z             {
2026-06-22T00:46:25.5580703Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T00:46:25.5580807Z               "line": 35
2026-06-22T00:46:25.5580913Z             }
2026-06-22T00:46:25.5581018Z           ]
2026-06-22T00:46:25.5581117Z         },
2026-06-22T00:46:25.5581213Z         "int": {
2026-06-22T00:46:25.5581331Z           "complete": false,
2026-06-22T00:46:25.5581432Z           "evidence": []
2026-06-22T00:46:25.5581533Z         },
2026-06-22T00:46:25.5581641Z         "unit": {
2026-06-22T00:46:25.5581746Z           "complete": true,
2026-06-22T00:46:25.5581848Z           "evidence": [
2026-06-22T00:46:25.5581947Z             {
2026-06-22T00:46:25.5582090Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T00:46:25.5582191Z               "line": 220
2026-06-22T00:46:25.5582294Z             }
2026-06-22T00:46:25.5582394Z           ]
2026-06-22T00:46:25.5582494Z         }
2026-06-22T00:46:25.5582597Z       }
2026-06-22T00:46:25.5582697Z     },
2026-06-22T00:46:25.5582797Z     {
2026-06-22T00:46:25.5583035Z       "id": "REQ-HAZARD-UNHOST-PSYCHE-REAP",
2026-06-22T00:46:25.5586129Z       "title": "On un-host, the detached `{id}-psyche` HARNESS PROCESS is reaped — not just its in-brain pulse-driver thread. Today stop_host (livehost.rs:203) trips the HostedLife stop flag + JOINS the driver thread, but the Psyche is a detached harness process (spawn_psyche → ManifestRuntime detached spawn, runtime.rs:341-356; its pid is untracked in HostedLife though stamped on the `{id}-psyche` perch, where residency-confirm already reads it). So endpoint-stop / mid-life agent-death / a B2/B5 offline-then-unhost leaves the psyche process ORPHANED, alive until the next daemon-stop (where Breap's job/group reaps the whole brain subtree). The Psyche STAYS a harness process by design (CONTEXT.md 97/203/251 — headless harness session, its own perch) — the fix does NOT move it in-brain; it SCOPED-kills the `{id}-psyche` pid on un-host (never machine-wide — shared box). Track the pid in HostedLife at host_one (cleanest) or read the `{id}-psyche` perch pid at stop_host. Composes with H3 (endpoint stop → offline → reconcile un-host → reap) and B2/B5 (the offline arms that trigger un-host). (v0.12.0)",
2026-06-22T00:46:25.5586406Z       "requiredStages": [
2026-06-22T00:46:25.5586510Z         "impl",
2026-06-22T00:46:25.5586620Z         "unit",
2026-06-22T00:46:25.5586721Z         "int"
2026-06-22T00:46:25.5586821Z       ],
2026-06-22T00:46:25.5586921Z       "stages": {
2026-06-22T00:46:25.5587021Z         "doc": {
2026-06-22T00:46:25.5587139Z           "complete": false,
2026-06-22T00:46:25.5587245Z           "evidence": []
2026-06-22T00:46:25.5587350Z         },
2026-06-22T00:46:25.5587454Z         "impl": {
2026-06-22T00:46:25.5587558Z           "complete": true,
2026-06-22T00:46:25.5587668Z           "evidence": [
2026-06-22T00:46:25.5587766Z             {
2026-06-22T00:46:25.5587923Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T00:46:25.5588024Z               "line": 202
2026-06-22T00:46:25.5588119Z             },
2026-06-22T00:46:25.5588233Z             {
2026-06-22T00:46:25.5588362Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-22T00:46:25.5588485Z               "line": 107
2026-06-22T00:46:25.5588587Z             },
2026-06-22T00:46:25.5588691Z             {
2026-06-22T00:46:25.5588824Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-22T00:46:25.5588940Z               "line": 138
2026-06-22T00:46:25.5589325Z             },
2026-06-22T00:46:25.5589420Z             {
2026-06-22T00:46:25.5589569Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T00:46:25.5589673Z               "line": 209
2026-06-22T00:46:25.5589783Z             },
2026-06-22T00:46:25.5589875Z             {
2026-06-22T00:46:25.5590021Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T00:46:25.5590132Z               "line": 246
2026-06-22T00:46:25.5590232Z             },
2026-06-22T00:46:25.5590335Z             {
2026-06-22T00:46:25.5590478Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T00:46:25.5590601Z               "line": 379
2026-06-22T00:46:25.5590704Z             }
2026-06-22T00:46:25.5590810Z           ]
2026-06-22T00:46:25.5590910Z         },
2026-06-22T00:46:25.5591014Z         "int": {
2026-06-22T00:46:25.5591129Z           "complete": true,
2026-06-22T00:46:25.5591239Z           "evidence": [
2026-06-22T00:46:25.5591343Z             {
2026-06-22T00:46:25.5591507Z               "path": "crates/spt/tests/unhost_psyche_reap_e2e.rs",
2026-06-22T00:46:25.5591602Z               "line": 17
2026-06-22T00:46:25.5591706Z             }
2026-06-22T00:46:25.5591807Z           ]
2026-06-22T00:46:25.5591911Z         },
2026-06-22T00:46:25.5592011Z         "unit": {
2026-06-22T00:46:25.5592122Z           "complete": true,
2026-06-22T00:46:25.5592230Z           "evidence": [
2026-06-22T00:46:25.5592331Z             {
2026-06-22T00:46:25.5592479Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.5592588Z               "line": 982
2026-06-22T00:46:25.5592813Z             }
2026-06-22T00:46:25.5592916Z           ]
2026-06-22T00:46:25.5593021Z         }
2026-06-22T00:46:25.5593219Z       }
2026-06-22T00:46:25.5593318Z     },
2026-06-22T00:46:25.5593424Z     {
2026-06-22T00:46:25.5593557Z       "id": "REQ-HAZARD-UPDATE-ROLLBACK",
2026-06-22T00:46:25.5593839Z       "title": "Self-update rejects version rollback; metadata expiry + adapter content signing (codex #5)",
2026-06-22T00:46:25.5593948Z       "requiredStages": [
2026-06-22T00:46:25.5594063Z         "impl",
2026-06-22T00:46:25.5594172Z         "unit"
2026-06-22T00:46:25.5594272Z       ],
2026-06-22T00:46:25.5594378Z       "stages": {
2026-06-22T00:46:25.5594478Z         "doc": {
2026-06-22T00:46:25.5594601Z           "complete": false,
2026-06-22T00:46:25.5594707Z           "evidence": []
2026-06-22T00:46:25.5594811Z         },
2026-06-22T00:46:25.5594921Z         "impl": {
2026-06-22T00:46:25.5595036Z           "complete": true,
2026-06-22T00:46:25.5595145Z           "evidence": [
2026-06-22T00:46:25.5595251Z             {
2026-06-22T00:46:25.5595407Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T00:46:25.5595527Z               "line": 405
2026-06-22T00:46:25.5595628Z             },
2026-06-22T00:46:25.5595726Z             {
2026-06-22T00:46:25.5595868Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T00:46:25.5595979Z               "line": 409
2026-06-22T00:46:25.5596083Z             },
2026-06-22T00:46:25.5596193Z             {
2026-06-22T00:46:25.5596332Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T00:46:25.5596450Z               "line": 156
2026-06-22T00:46:25.5596561Z             }
2026-06-22T00:46:25.5596661Z           ]
2026-06-22T00:46:25.5596765Z         },
2026-06-22T00:46:25.5596870Z         "int": {
2026-06-22T00:46:25.5596980Z           "complete": false,
2026-06-22T00:46:25.5597094Z           "evidence": []
2026-06-22T00:46:25.5597195Z         },
2026-06-22T00:46:25.5597300Z         "unit": {
2026-06-22T00:46:25.5597414Z           "complete": true,
2026-06-22T00:46:25.5597525Z           "evidence": [
2026-06-22T00:46:25.5597638Z             {
2026-06-22T00:46:25.5597786Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T00:46:25.5597887Z               "line": 865
2026-06-22T00:46:25.5597995Z             },
2026-06-22T00:46:25.5598109Z             {
2026-06-22T00:46:25.5598247Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T00:46:25.5598350Z               "line": 879
2026-06-22T00:46:25.5598454Z             },
2026-06-22T00:46:25.5598561Z             {
2026-06-22T00:46:25.5598698Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T00:46:25.5598813Z               "line": 898
2026-06-22T00:46:25.5598913Z             },
2026-06-22T00:46:25.5599089Z             {
2026-06-22T00:46:25.5599223Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T00:46:25.5599322Z               "line": 915
2026-06-22T00:46:25.5599433Z             },
2026-06-22T00:46:25.5599538Z             {
2026-06-22T00:46:25.5599689Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-22T00:46:25.5599809Z               "line": 441
2026-06-22T00:46:25.5599904Z             }
2026-06-22T00:46:25.5600009Z           ]
2026-06-22T00:46:25.5600115Z         }
2026-06-22T00:46:25.5600219Z       }
2026-06-22T00:46:25.5600314Z     },
2026-06-22T00:46:25.5600421Z     {
2026-06-22T00:46:25.5600557Z       "id": "REQ-HAZARD-VIEWER-CLOSE-DETACH",
2026-06-22T00:46:25.5610173Z       "title": "A VIEW is independent from the endpoint: closing the tab/window where `spt endpoint run` was invoked must detach ONLY the `spt rc` attach pump — the daemon-hosted harness keeps running and stays re-attachable via `spt rc <id>`. ROOT (Windows, v0.12.0 real-harness defect): the daemon never breaks away from the launching terminal's Job Object. Windows Terminal / VS Code place the launched shell AND every descendant into a Job Object with JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE; closing the tab drops the terminal's last job handle → the OS terminates every process still in that job. A child escapes only with CREATE_BREAKAWAY_FROM_JOB — used NOWHERE in the tree. Both daemon spawn paths (daemon.rs:707 detached_no_inherit = DETACHED_PROCESS|CREATE_NEW_PROCESS_GROUP|CREATE_NO_WINDOW; deelevate.rs:519 elevated = CREATE_NEW_CONSOLE|...) drop the CONSOLE but NOT job membership, so the daemon's freshly broker-spawned ConPTY harness subtree is reaped on tab-close. The ConPTY/pseudoconsole isolation itself is CORRECT (portable-pty builds the pseudoconsole in the daemon; no console signal / handle leak) — the leaking lifetime binding is the Job Object, not the console. FIX: add CREATE_BREAKAWAY_FROM_JOB to both daemon spawn paths AND pin each broker-spawned harness into a DAEMON-OWNED Job Object (mirror reap.rs/Breap) as backstop (survives even where a terminal sets SILENT_BREAKAWAY_OK=false). Unix: the daemon's own session detachment (new session, no controlling terminal) already keeps a closing terminal's SIGHUP off its children — verify, add a guard test, no code expected. FIX UPDATE (v0.12.1 L1.5, doyle re-scope operator-approved 2026-06-18): job-neutral daemon launch is now PRIMARY, breakaway DEMOTED to a fallback rung. ROOT reframed — the daemon INHERITS the terminal's Job because spawn_detached runs FROM the terminal-child CLI (DETACHED_PROCESS detaches the console, not the job); breakaway tried to claw back out but a job CAN deny it (the L1 finding). FIX: launch the cold-started daemon via a job-NEUTRAL creator so it is WmiPrvSE/Task-Scheduler-owned, OUTSIDE any terminal job from birth (why Task-Scheduler-autostarted daemons never had this bug). Launcher ladder (first-success-wins, daemon.rs spawn_detached → BOTH cold-start AND `spt daemon start`): (1) WMI Win32_Process.Create via ABSOLUTE powershell -EncodedCommand (KH 5.12 abs path; base64-UTF16LE dodges all quoting; success requires BOTH ReturnValue==0 AND a parsed ProcessId, else fall-through — never a silent launched), forwarding SPT_* env via a `cmd /c set … & start /b` wrapper because a WMI/scheduler child does NOT inherit transient shell env (verified — SPT_HOME would be lost, wrong universe); (2) schtasks one-shot (same env wrapper; best-effort fallback); (3) CREATE_BREAKAWAY_FROM_JOB (the L1 code, reordered below); (4) in-job last resort (logs DETACH_IN_JOB + tab-close caveat). detached_no_inherit (breakaway-then-in-job) is UNCHANGED for its other caller shellhost::launch_shell (a daemon-spawned shell is already job-neutral once the daemon is). The elevated deelevate path keeps its L1 breakaway for now (elevated-case WMI-reparent = FOLLOW-UP). (v0.12.1)",
2026-06-22T00:46:25.5610578Z       "requiredStages": [
2026-06-22T00:46:25.5610685Z         "doc",
2026-06-22T00:46:25.5610784Z         "impl",
2026-06-22T00:46:25.5610884Z         "unit",
2026-06-22T00:46:25.5610990Z         "int"
2026-06-22T00:46:25.5611093Z       ],
2026-06-22T00:46:25.5611203Z       "stages": {
2026-06-22T00:46:25.5611310Z         "doc": {
2026-06-22T00:46:25.5611437Z           "complete": true,
2026-06-22T00:46:25.5611550Z           "evidence": [
2026-06-22T00:46:25.5611650Z             {
2026-06-22T00:46:25.5611768Z               "path": "CONTEXT.md",
2026-06-22T00:46:25.5611882Z               "line": 420
2026-06-22T00:46:25.5611978Z             },
2026-06-22T00:46:25.5612087Z             {
2026-06-22T00:46:25.5612220Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T00:46:25.5612331Z               "line": 402
2026-06-22T00:46:25.5612430Z             }
2026-06-22T00:46:25.5612535Z           ]
2026-06-22T00:46:25.5612641Z         },
2026-06-22T00:46:25.5612745Z         "impl": {
2026-06-22T00:46:25.5612855Z           "complete": true,
2026-06-22T00:46:25.5612960Z           "evidence": [
2026-06-22T00:46:25.5613055Z             {
2026-06-22T00:46:25.5613209Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.5613308Z               "line": 797
2026-06-22T00:46:25.5613417Z             },
2026-06-22T00:46:25.5613514Z             {
2026-06-22T00:46:25.5613746Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.5613857Z               "line": 822
2026-06-22T00:46:25.5614031Z             },
2026-06-22T00:46:25.5614141Z             {
2026-06-22T00:46:25.5614283Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.5614386Z               "line": 839
2026-06-22T00:46:25.5614487Z             },
2026-06-22T00:46:25.5614588Z             {
2026-06-22T00:46:25.5614734Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.5614836Z               "line": 854
2026-06-22T00:46:25.5614941Z             },
2026-06-22T00:46:25.5615044Z             {
2026-06-22T00:46:25.5615174Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.5615284Z               "line": 874
2026-06-22T00:46:25.5615388Z             },
2026-06-22T00:46:25.5615494Z             {
2026-06-22T00:46:25.5615641Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.5615746Z               "line": 964
2026-06-22T00:46:25.5615846Z             },
2026-06-22T00:46:25.5615946Z             {
2026-06-22T00:46:25.5616095Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.5616213Z               "line": 1016
2026-06-22T00:46:25.5616323Z             },
2026-06-22T00:46:25.5616414Z             {
2026-06-22T00:46:25.5616560Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.5616671Z               "line": 1075
2026-06-22T00:46:25.5616777Z             },
2026-06-22T00:46:25.5616880Z             {
2026-06-22T00:46:25.5617027Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T00:46:25.5617143Z               "line": 527
2026-06-22T00:46:25.5617237Z             }
2026-06-22T00:46:25.5617342Z           ]
2026-06-22T00:46:25.5617438Z         },
2026-06-22T00:46:25.5617537Z         "int": {
2026-06-22T00:46:25.5617657Z           "complete": true,
2026-06-22T00:46:25.5617762Z           "evidence": [
2026-06-22T00:46:25.5617862Z             {
2026-06-22T00:46:25.5618015Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-22T00:46:25.5618124Z               "line": 35
2026-06-22T00:46:25.5618233Z             },
2026-06-22T00:46:25.5618339Z             {
2026-06-22T00:46:25.5618487Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-22T00:46:25.5618596Z               "line": 569
2026-06-22T00:46:25.5618711Z             },
2026-06-22T00:46:25.5618815Z             {
2026-06-22T00:46:25.5619045Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-22T00:46:25.5619153Z               "line": 590
2026-06-22T00:46:25.5619258Z             }
2026-06-22T00:46:25.5619353Z           ]
2026-06-22T00:46:25.5619451Z         },
2026-06-22T00:46:25.5619555Z         "unit": {
2026-06-22T00:46:25.5619661Z           "complete": true,
2026-06-22T00:46:25.5619766Z           "evidence": [
2026-06-22T00:46:25.5619865Z             {
2026-06-22T00:46:25.5620014Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.5620137Z               "line": 1202
2026-06-22T00:46:25.5620238Z             },
2026-06-22T00:46:25.5620348Z             {
2026-06-22T00:46:25.5620481Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.5620601Z               "line": 1246
2026-06-22T00:46:25.5620701Z             },
2026-06-22T00:46:25.5620810Z             {
2026-06-22T00:46:25.5620953Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.5621062Z               "line": 1260
2026-06-22T00:46:25.5621173Z             },
2026-06-22T00:46:25.5621278Z             {
2026-06-22T00:46:25.5621420Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.5621526Z               "line": 1278
2026-06-22T00:46:25.5621644Z             },
2026-06-22T00:46:25.5621750Z             {
2026-06-22T00:46:25.5621889Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.5622006Z               "line": 1302
2026-06-22T00:46:25.5622105Z             },
2026-06-22T00:46:25.5622328Z             {
2026-06-22T00:46:25.5622466Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.5622685Z               "line": 1529
2026-06-22T00:46:25.5622790Z             }
2026-06-22T00:46:25.5622891Z           ]
2026-06-22T00:46:25.5623009Z         }
2026-06-22T00:46:25.5623105Z       }
2026-06-22T00:46:25.5623205Z     },
2026-06-22T00:46:25.5623305Z     {
2026-06-22T00:46:25.5623429Z       "id": "REQ-HAZARD-VIEWER-ISOLATION",
2026-06-22T00:46:25.5625599Z       "title": "A slow / dead / hostile VIEWER must NEVER stall the controller, the PTY child, or the session drain thread. The broker drain fans output to the controller on the authoritative blocking bounded path (advances delivered_through) but to each viewer via a bounded per-viewer channel with a dedicated writer thread; the drain `try_send`s under the log lock and a viewer whose bounded queue OVERFLOWS (can't keep up) is EVICTED (queue dropped, writer thread ends, removed from the viewers map) — the drain thread NEVER touches a viewer socket, so no viewer write can backpressure or block it. A soft viewer cap bounds the thread count. Viewer eviction never perturbs the controller stream, the delivered_through cursor, or the child.",
2026-06-22T00:46:25.5625734Z       "requiredStages": [
2026-06-22T00:46:25.5625834Z         "unit",
2026-06-22T00:46:25.5625943Z         "int"
2026-06-22T00:46:25.5626044Z       ],
2026-06-22T00:46:25.5626153Z       "stages": {
2026-06-22T00:46:25.5626287Z         "doc": {
2026-06-22T00:46:25.5626435Z           "complete": true,
2026-06-22T00:46:25.5626548Z           "evidence": [
2026-06-22T00:46:25.5626650Z             {
2026-06-22T00:46:25.5626787Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T00:46:25.5626902Z               "line": 381
2026-06-22T00:46:25.5627008Z             }
2026-06-22T00:46:25.5627097Z           ]
2026-06-22T00:46:25.5627202Z         },
2026-06-22T00:46:25.5627313Z         "impl": {
2026-06-22T00:46:25.5627473Z           "complete": true,
2026-06-22T00:46:25.5627597Z           "evidence": [
2026-06-22T00:46:25.5627698Z             {
2026-06-22T00:46:25.5627840Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.5627940Z               "line": 143
2026-06-22T00:46:25.5628046Z             }
2026-06-22T00:46:25.5628150Z           ]
2026-06-22T00:46:25.5628251Z         },
2026-06-22T00:46:25.5628360Z         "int": {
2026-06-22T00:46:25.5628469Z           "complete": true,
2026-06-22T00:46:25.5628585Z           "evidence": [
2026-06-22T00:46:25.5628684Z             {
2026-06-22T00:46:25.5628832Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T00:46:25.5629022Z               "line": 1045
2026-06-22T00:46:25.5629123Z             }
2026-06-22T00:46:25.5629229Z           ]
2026-06-22T00:46:25.5629327Z         },
2026-06-22T00:46:25.5629442Z         "unit": {
2026-06-22T00:46:25.5629568Z           "complete": true,
2026-06-22T00:46:25.5629680Z           "evidence": [
2026-06-22T00:46:25.5629789Z             {
2026-06-22T00:46:25.5629941Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.5630054Z               "line": 2511
2026-06-22T00:46:25.5630168Z             }
2026-06-22T00:46:25.5630275Z           ]
2026-06-22T00:46:25.5630364Z         }
2026-06-22T00:46:25.5630469Z       }
2026-06-22T00:46:25.5630579Z     },
2026-06-22T00:46:25.5630678Z     {
2026-06-22T00:46:25.5630823Z       "id": "REQ-HAZARD-VIEWER-RING-ROLL-SNAP",
2026-06-22T00:46:25.5634944Z       "title": "A read-only rc --view VIEWER whose serving brain falls behind the live ring under a hard flood and receives a FORWARD Output seq gap (the ring rolled frames out between reads, BEFORE any channel-overflow eviction → NO KIND_VIEWER_EVICTED marker) must SNAP TO LIVE (accept-and-advance via dedup-below + snap-above), NOT fatal with output gap (brain.rs:624/628 legacy reject-gap). ROOT (v0.13.0 forkpty, post-b4+skip-to-live): serve_attach subscribes a viewer via brain.attach_as(Viewer) leaving session_cursors EMPTY → the viewer serve-brain uses the LEGACY reject-gap → a PRE-eviction ring-roll forward-gap FATALS read_event → serve_attach returns → forwarding stops → attach_received_pty_output=FALSE (a_journaled / p0_paste / attach.rs:1071 wedged_viewer, Linux forkpty; Windows ConPTY floods slower → MASKED false-green). DISTINCT from REQ-VIEWER-SKIP-TO-LIVE-ON-EVICT (the POST-eviction re-subscribe-from-floor): this is PRE-eviction gap-tolerance while STILL subscribed. VIEWER-only → B2-SAFE (a viewer never advances delivered_through / is not authoritative); the CONTROLLER keeps strict reject-gap (exactly-once resume). FIX: arm snap-above at initial viewer attach (attach_as_viewer_snap = attach_as(Viewer) + session_cursors.insert(session_id, from_seq)); the two viewer-survival mechanisms COMPOSE — this tolerates pre-eviction ring-roll gaps, REQ-VIEWER-SKIP-TO-LIVE-ON-EVICT recovers post-eviction. (v0.13.0)",
2026-06-22T00:46:25.5635300Z       "requiredStages": [
2026-06-22T00:46:25.5635412Z         "doc",
2026-06-22T00:46:25.5635525Z         "impl",
2026-06-22T00:46:25.5635631Z         "unit"
2026-06-22T00:46:25.5635732Z       ],
2026-06-22T00:46:25.5635840Z       "stages": {
2026-06-22T00:46:25.5635946Z         "doc": {
2026-06-22T00:46:25.5636066Z           "complete": true,
2026-06-22T00:46:25.5636179Z           "evidence": [
2026-06-22T00:46:25.5636285Z             {
2026-06-22T00:46:25.5636404Z               "path": "CONTEXT.md",
2026-06-22T00:46:25.5636508Z               "line": 342
2026-06-22T00:46:25.5636604Z             }
2026-06-22T00:46:25.5636708Z           ]
2026-06-22T00:46:25.5636808Z         },
2026-06-22T00:46:25.5636910Z         "impl": {
2026-06-22T00:46:25.5637033Z           "complete": true,
2026-06-22T00:46:25.5637142Z           "evidence": [
2026-06-22T00:46:25.5637253Z             {
2026-06-22T00:46:25.5637391Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T00:46:25.5637501Z               "line": 333
2026-06-22T00:46:25.5637601Z             },
2026-06-22T00:46:25.5637710Z             {
2026-06-22T00:46:25.5637859Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T00:46:25.5637967Z               "line": 892
2026-06-22T00:46:25.5638085Z             }
2026-06-22T00:46:25.5638186Z           ]
2026-06-22T00:46:25.5638287Z         },
2026-06-22T00:46:25.5638395Z         "int": {
2026-06-22T00:46:25.5638520Z           "complete": false,
2026-06-22T00:46:25.5638635Z           "evidence": []
2026-06-22T00:46:25.5638738Z         },
2026-06-22T00:46:25.5638849Z         "unit": {
2026-06-22T00:46:25.5639043Z           "complete": true,
2026-06-22T00:46:25.5639150Z           "evidence": [
2026-06-22T00:46:25.5639253Z             {
2026-06-22T00:46:25.5639397Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T00:46:25.5639503Z               "line": 1682
2026-06-22T00:46:25.5639602Z             }
2026-06-22T00:46:25.5639702Z           ]
2026-06-22T00:46:25.5639803Z         }
2026-06-22T00:46:25.5639916Z       }
2026-06-22T00:46:25.5640007Z     },
2026-06-22T00:46:25.5640118Z     {
2026-06-22T00:46:25.5640330Z       "id": "REQ-HAZARD-VIEWER-STARVE-UNDER-CONTROLLER-BACKPRESSURE",
2026-06-22T00:46:25.5645499Z       "title": "A SLOW controller must not starve a concurrent `rc --view` VIEWER. W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST) moved the controller SOCKET WRITE off the drain thread onto controller_writer, but left the bounded HANDOFF (ControllerJob::deliver) as an INLINE try_send SLEEP-POLL on the drain (broker.rs:1450-1457 → deliver:669-685, up to CONTROLLER_WRITE_DEADLINE=5s). So when a controller drains slower than the PTY floods, its CONTROLLER_CHANNEL_DEPTH(4096) channel fills, deliver() polls inline, and the DRAIN THREAD is throttled to the controller's read rate → OutputLog::append's viewer fan-out (try_send) stops running → a concurrent VIEWER receives only the initial replay then nothing (root 'b4', warm forkpty: a_journaled c1=0/EVICT=0/got_output=FALSE; steady-state-near-full = no recovery; forkpty-only, floods harder than Windows ConPTY). The viewer-not-starved-by-a-busy-session property is legitimate (rc --view of a noisy session must show LIVE output). FIX: the controller becomes a SINGLE NON-BLOCKING try_send (like a viewer), done IN append() under the log lock; deliver()'s sleep-poll DELETED; the drain NEVER sleeps. ControllerSink gains a stateful last_ok deadline → a TRULY-stalled controller (continuous-Full past CONTROLLER_WRITE_DEADLINE) is evicted (bounded-wedge preserved); a slow-but-alive controller DROPS frames + falls behind the ring (resume-from-floor, the existing reconnect case). B2 GAPLESS-HANDOFF PRESERVED via a CONTIGUOUS delivered_through: controller_writer advances the cursor ONLY when the written seq == cursor (next expected); a gap from a drop FREEZES the cursor at last-contiguous so a re-attaching brain's resume_seq never skips a dropped chunk (a high-watermark advance past the gap would be a not-exactly-once resume = B2 violation, doyle's gate). (v0.13.0)",
2026-06-22T00:46:25.5645888Z       "requiredStages": [
2026-06-22T00:46:25.5646000Z         "impl",
2026-06-22T00:46:25.5646109Z         "unit"
2026-06-22T00:46:25.5646215Z       ],
2026-06-22T00:46:25.5646320Z       "stages": {
2026-06-22T00:46:25.5646439Z         "doc": {
2026-06-22T00:46:25.5646554Z           "complete": false,
2026-06-22T00:46:25.5646668Z           "evidence": []
2026-06-22T00:46:25.5646773Z         },
2026-06-22T00:46:25.5646868Z         "impl": {
2026-06-22T00:46:25.5646978Z           "complete": true,
2026-06-22T00:46:25.5647083Z           "evidence": [
2026-06-22T00:46:25.5647188Z             {
2026-06-22T00:46:25.5647326Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.5647431Z               "line": 376
2026-06-22T00:46:25.5647536Z             },
2026-06-22T00:46:25.5647631Z             {
2026-06-22T00:46:25.5647766Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.5647874Z               "line": 832
2026-06-22T00:46:25.5647974Z             }
2026-06-22T00:46:25.5648081Z           ]
2026-06-22T00:46:25.5648189Z         },
2026-06-22T00:46:25.5648304Z         "int": {
2026-06-22T00:46:25.5648420Z           "complete": false,
2026-06-22T00:46:25.5648532Z           "evidence": []
2026-06-22T00:46:25.5648640Z         },
2026-06-22T00:46:25.5648746Z         "unit": {
2026-06-22T00:46:25.5648861Z           "complete": true,
2026-06-22T00:46:25.5649047Z           "evidence": [
2026-06-22T00:46:25.5649147Z             {
2026-06-22T00:46:25.5649279Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.5649395Z               "line": 2726
2026-06-22T00:46:25.5649500Z             },
2026-06-22T00:46:25.5649608Z             {
2026-06-22T00:46:25.5649729Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.5649838Z               "line": 2795
2026-06-22T00:46:25.5649947Z             }
2026-06-22T00:46:25.5650049Z           ]
2026-06-22T00:46:25.5650152Z         }
2026-06-22T00:46:25.5650243Z       }
2026-06-22T00:46:25.5650349Z     },
2026-06-22T00:46:25.5650448Z     {
2026-06-22T00:46:25.5650587Z       "id": "REQ-HAZARD-WAN-ORIGIN-AUTH",
2026-06-22T00:46:25.5651423Z       "title": "WAN-inbound origin is transport truth, never payload: the access gate's subject (ADR-0009 origin-node whitelist) is the QUIC handshake-proven remote node id from the broker's conn/stream table — a forged origin/node field inside record bytes is inert (7.5)",
2026-06-22T00:46:25.5651541Z       "requiredStages": [
2026-06-22T00:46:25.5651652Z         "doc",
2026-06-22T00:46:25.5651756Z         "impl",
2026-06-22T00:46:25.5651865Z         "unit"
2026-06-22T00:46:25.5651972Z       ],
2026-06-22T00:46:25.5652076Z       "stages": {
2026-06-22T00:46:25.5652180Z         "doc": {
2026-06-22T00:46:25.5652286Z           "complete": true,
2026-06-22T00:46:25.5652400Z           "evidence": [
2026-06-22T00:46:25.5652500Z             {
2026-06-22T00:46:25.5652630Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T00:46:25.5652743Z               "line": 366
2026-06-22T00:46:25.5652843Z             }
2026-06-22T00:46:25.5655953Z           ]
2026-06-22T00:46:25.5656229Z         },
2026-06-22T00:46:25.5656348Z         "impl": {
2026-06-22T00:46:25.5656463Z           "complete": true,
2026-06-22T00:46:25.5656669Z           "evidence": [
2026-06-22T00:46:25.5656775Z             {
2026-06-22T00:46:25.5656927Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T00:46:25.5657037Z               "line": 87
2026-06-22T00:46:25.5657138Z             },
2026-06-22T00:46:25.5657247Z             {
2026-06-22T00:46:25.5657396Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T00:46:25.5657505Z               "line": 203
2026-06-22T00:46:25.5657609Z             },
2026-06-22T00:46:25.5657711Z             {
2026-06-22T00:46:25.5657853Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T00:46:25.5657953Z               "line": 55
2026-06-22T00:46:25.5658063Z             },
2026-06-22T00:46:25.5658149Z             {
2026-06-22T00:46:25.5658302Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T00:46:25.5658420Z               "line": 31
2026-06-22T00:46:25.5658520Z             },
2026-06-22T00:46:25.5658626Z             {
2026-06-22T00:46:25.5658782Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T00:46:25.5658897Z               "line": 446
2026-06-22T00:46:25.5659078Z             },
2026-06-22T00:46:25.5659182Z             {
2026-06-22T00:46:25.5659325Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T00:46:25.5659421Z               "line": 95
2026-06-22T00:46:25.5659520Z             },
2026-06-22T00:46:25.5659626Z             {
2026-06-22T00:46:25.5659773Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T00:46:25.5659888Z               "line": 29
2026-06-22T00:46:25.5659989Z             },
2026-06-22T00:46:25.5660088Z             {
2026-06-22T00:46:25.5660231Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T00:46:25.5660341Z               "line": 104
2026-06-22T00:46:25.5660441Z             },
2026-06-22T00:46:25.5660551Z             {
2026-06-22T00:46:25.5660712Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.5660807Z               "line": 208
2026-06-22T00:46:25.5660914Z             },
2026-06-22T00:46:25.5661008Z             {
2026-06-22T00:46:25.5661152Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-22T00:46:25.5661248Z               "line": 28
2026-06-22T00:46:25.5661356Z             },
2026-06-22T00:46:25.5661456Z             {
2026-06-22T00:46:25.5661598Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-22T00:46:25.5661711Z               "line": 74
2026-06-22T00:46:25.5661810Z             },
2026-06-22T00:46:25.5661917Z             {
2026-06-22T00:46:25.5662068Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-22T00:46:25.5662178Z               "line": 32
2026-06-22T00:46:25.5662283Z             },
2026-06-22T00:46:25.5662382Z             {
2026-06-22T00:46:25.5662517Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T00:46:25.5662631Z               "line": 40
2026-06-22T00:46:25.5662735Z             },
2026-06-22T00:46:25.5662841Z             {
2026-06-22T00:46:25.5662984Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T00:46:25.5663084Z               "line": 184
2026-06-22T00:46:25.5663185Z             },
2026-06-22T00:46:25.5663294Z             {
2026-06-22T00:46:25.5663418Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T00:46:25.5663533Z               "line": 61
2026-06-22T00:46:25.5663628Z             },
2026-06-22T00:46:25.5663723Z             {
2026-06-22T00:46:25.5663862Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T00:46:25.5663971Z               "line": 131
2026-06-22T00:46:25.5664077Z             },
2026-06-22T00:46:25.5664181Z             {
2026-06-22T00:46:25.5664322Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T00:46:25.5664427Z               "line": 223
2026-06-22T00:46:25.5664536Z             },
2026-06-22T00:46:25.5664779Z             {
2026-06-22T00:46:25.5664911Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-22T00:46:25.5665117Z               "line": 37
2026-06-22T00:46:25.5665208Z             },
2026-06-22T00:46:25.5665307Z             {
2026-06-22T00:46:25.5665451Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T00:46:25.5665560Z               "line": 38
2026-06-22T00:46:25.5665670Z             },
2026-06-22T00:46:25.5665775Z             {
2026-06-22T00:46:25.5665917Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-22T00:46:25.5666028Z               "line": 36
2026-06-22T00:46:25.5666137Z             },
2026-06-22T00:46:25.5666242Z             {
2026-06-22T00:46:25.5666372Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-22T00:46:25.5666484Z               "line": 40
2026-06-22T00:46:25.5666585Z             }
2026-06-22T00:46:25.5666696Z           ]
2026-06-22T00:46:25.5666799Z         },
2026-06-22T00:46:25.5666903Z         "int": {
2026-06-22T00:46:25.5667018Z           "complete": false,
2026-06-22T00:46:25.5667135Z           "evidence": []
2026-06-22T00:46:25.5667244Z         },
2026-06-22T00:46:25.5667340Z         "unit": {
2026-06-22T00:46:25.5667459Z           "complete": true,
2026-06-22T00:46:25.5667564Z           "evidence": [
2026-06-22T00:46:25.5667660Z             {
2026-06-22T00:46:25.5667807Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T00:46:25.5667917Z               "line": 212
2026-06-22T00:46:25.5668022Z             },
2026-06-22T00:46:25.5668117Z             {
2026-06-22T00:46:25.5668271Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-22T00:46:25.5668379Z               "line": 136
2026-06-22T00:46:25.5668484Z             },
2026-06-22T00:46:25.5668576Z             {
2026-06-22T00:46:25.5668723Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-22T00:46:25.5668832Z               "line": 685
2026-06-22T00:46:25.5668934Z             },
2026-06-22T00:46:25.5669104Z             {
2026-06-22T00:46:25.5669249Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-22T00:46:25.5669366Z               "line": 224
2026-06-22T00:46:25.5669487Z             },
2026-06-22T00:46:25.5669587Z             {
2026-06-22T00:46:25.5669733Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-22T00:46:25.5669842Z               "line": 206
2026-06-22T00:46:25.5669948Z             },
2026-06-22T00:46:25.5670042Z             {
2026-06-22T00:46:25.5670181Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-22T00:46:25.5670286Z               "line": 112
2026-06-22T00:46:25.5670390Z             },
2026-06-22T00:46:25.5670497Z             {
2026-06-22T00:46:25.5670634Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-22T00:46:25.5670738Z               "line": 157
2026-06-22T00:46:25.5670840Z             },
2026-06-22T00:46:25.5670949Z             {
2026-06-22T00:46:25.5671092Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T00:46:25.5671202Z               "line": 215
2026-06-22T00:46:25.5671311Z             },
2026-06-22T00:46:25.5671412Z             {
2026-06-22T00:46:25.5671554Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-22T00:46:25.5671659Z               "line": 141
2026-06-22T00:46:25.5671770Z             },
2026-06-22T00:46:25.5671873Z             {
2026-06-22T00:46:25.5672006Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-22T00:46:25.5672125Z               "line": 162
2026-06-22T00:46:25.5672219Z             }
2026-06-22T00:46:25.5672327Z           ]
2026-06-22T00:46:25.5672424Z         }
2026-06-22T00:46:25.5672534Z       }
2026-06-22T00:46:25.5672637Z     },
2026-06-22T00:46:25.5672739Z     {
2026-06-22T00:46:25.5672891Z       "id": "REQ-HAZARD-WIN-PTY-PROGRAM-RESOLVE",
2026-06-22T00:46:25.5674783Z       "title": "Native-PTY spawn must resolve a bare program name with PATHEXT precedence and run a non-PE target through its interpreter: portable-pty's own `which` takes the FIRST PATH match — an extensionless shebang shim (e.g. a node CLI `ccs` shipped beside `ccs.cmd`) — and CreateProcessW then rejects the non-PE file with os error 193 ('not a valid Win32 application'); spt-term resolves the program itself (PATHEXT order prefers .EXE over .CMD; .cmd/.bat → cmd.exe /d /c, .ps1 → powershell -NoProfile -File) so a bare harness/shell [session.self] command actually launches on Windows. Unix is a passthrough (execve honours the shebang).",
2026-06-22T00:46:25.5675114Z       "requiredStages": [
2026-06-22T00:46:25.5675219Z         "doc",
2026-06-22T00:46:25.5675319Z         "impl",
2026-06-22T00:46:25.5675429Z         "unit",
2026-06-22T00:46:25.5675533Z         "int"
2026-06-22T00:46:25.5675630Z       ],
2026-06-22T00:46:25.5675740Z       "stages": {
2026-06-22T00:46:25.5675843Z         "doc": {
2026-06-22T00:46:25.5675964Z           "complete": true,
2026-06-22T00:46:25.5676078Z           "evidence": [
2026-06-22T00:46:25.5676187Z             {
2026-06-22T00:46:25.5676321Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T00:46:25.5676430Z               "line": 250
2026-06-22T00:46:25.5676535Z             }
2026-06-22T00:46:25.5676631Z           ]
2026-06-22T00:46:25.5676740Z         },
2026-06-22T00:46:25.5676845Z         "impl": {
2026-06-22T00:46:25.5676951Z           "complete": true,
2026-06-22T00:46:25.5677059Z           "evidence": [
2026-06-22T00:46:25.5677160Z             {
2026-06-22T00:46:25.5677299Z               "path": "crates/spt-term/src/pty.rs",
2026-06-22T00:46:25.5677407Z               "line": 135
2026-06-22T00:46:25.5677521Z             },
2026-06-22T00:46:25.5677621Z             {
2026-06-22T00:46:25.5677752Z               "path": "crates/spt-term/src/pty.rs",
2026-06-22T00:46:25.5677848Z               "line": 157
2026-06-22T00:46:25.5677949Z             }
2026-06-22T00:46:25.5678052Z           ]
2026-06-22T00:46:25.5678153Z         },
2026-06-22T00:46:25.5678258Z         "int": {
2026-06-22T00:46:25.5678367Z           "complete": true,
2026-06-22T00:46:25.5678478Z           "evidence": [
2026-06-22T00:46:25.5678582Z             {
2026-06-22T00:46:25.5678734Z               "path": "crates/spt-term/tests/winspawn.rs",
2026-06-22T00:46:25.5678850Z               "line": 15
2026-06-22T00:46:25.5679030Z             }
2026-06-22T00:46:25.5679136Z           ]
2026-06-22T00:46:25.5679230Z         },
2026-06-22T00:46:25.5679340Z         "unit": {
2026-06-22T00:46:25.5679451Z           "complete": true,
2026-06-22T00:46:25.5679554Z           "evidence": [
2026-06-22T00:46:25.5679659Z             {
2026-06-22T00:46:25.5679799Z               "path": "crates/spt-term/src/winprog.rs",
2026-06-22T00:46:25.5679912Z               "line": 233
2026-06-22T00:46:25.5680013Z             }
2026-06-22T00:46:25.5680119Z           ]
2026-06-22T00:46:25.5680217Z         }
2026-06-22T00:46:25.5680326Z       }
2026-06-22T00:46:25.5680431Z     },
2026-06-22T00:46:25.5680527Z     {
2026-06-22T00:46:25.5680669Z       "id": "REQ-HAZARD-WINDOWS-PID-RECYCLE",
2026-06-22T00:46:25.5680856Z       "title": "Windows PID-recycling false positives guarded (5.1)",
2026-06-22T00:46:25.5680969Z       "requiredStages": [
2026-06-22T00:46:25.5681066Z         "impl",
2026-06-22T00:46:25.5681176Z         "unit"
2026-06-22T00:46:25.5681280Z       ],
2026-06-22T00:46:25.5681386Z       "stages": {
2026-06-22T00:46:25.5681494Z         "doc": {
2026-06-22T00:46:25.5681609Z           "complete": false,
2026-06-22T00:46:25.5681720Z           "evidence": []
2026-06-22T00:46:25.5681819Z         },
2026-06-22T00:46:25.5681928Z         "impl": {
2026-06-22T00:46:25.5682035Z           "complete": true,
2026-06-22T00:46:25.5682138Z           "evidence": [
2026-06-22T00:46:25.5682238Z             {
2026-06-22T00:46:25.5682378Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T00:46:25.5682481Z               "line": 95
2026-06-22T00:46:25.5682585Z             },
2026-06-22T00:46:25.5682686Z             {
2026-06-22T00:46:25.5682822Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.5682936Z               "line": 117
2026-06-22T00:46:25.5683141Z             }
2026-06-22T00:46:25.5683241Z           ]
2026-06-22T00:46:25.5683436Z         },
2026-06-22T00:46:25.5683541Z         "int": {
2026-06-22T00:46:25.5683661Z           "complete": false,
2026-06-22T00:46:25.5683770Z           "evidence": []
2026-06-22T00:46:25.5683875Z         },
2026-06-22T00:46:25.5683976Z         "unit": {
2026-06-22T00:46:25.5684085Z           "complete": true,
2026-06-22T00:46:25.5684195Z           "evidence": [
2026-06-22T00:46:25.5684290Z             {
2026-06-22T00:46:25.5684433Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T00:46:25.5684543Z               "line": 250
2026-06-22T00:46:25.5684643Z             },
2026-06-22T00:46:25.5684743Z             {
2026-06-22T00:46:25.5684887Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T00:46:25.5684996Z               "line": 412
2026-06-22T00:46:25.5685091Z             },
2026-06-22T00:46:25.5685197Z             {
2026-06-22T00:46:25.5685343Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.5685452Z               "line": 611
2026-06-22T00:46:25.5685566Z             },
2026-06-22T00:46:25.5685670Z             {
2026-06-22T00:46:25.5685812Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.5685918Z               "line": 669
2026-06-22T00:46:25.5686023Z             }
2026-06-22T00:46:25.5686127Z           ]
2026-06-22T00:46:25.5686219Z         }
2026-06-22T00:46:25.5686323Z       }
2026-06-22T00:46:25.5686427Z     },
2026-06-22T00:46:25.5686528Z     {
2026-06-22T00:46:25.5686666Z       "id": "REQ-HAZARD-WMI-DAEMON-WINDOW",
2026-06-22T00:46:25.5689237Z       "title": "`spt daemon start` launches the daemon with NO visible console window. REGRESSION (v0.12.1 L1.5): the WMI job-neutral launch (spawn_daemon_via_wmi) set CREATE_NO_WINDOW on the launching powershell but NOT on the Win32_Process.Create call — Win32_Process.Create does not inherit it, so the spawned cmd.exe env-forwarding wrapper popped a console window on every cold-start (violating REQ-INSTALL-10's v0.7.4 no-persistent-window invariant; the old detached_no_inherit path set DETACHED_PROCESS|CREATE_NO_WINDOW). FIX: pass a Win32_ProcessStartup with CreateFlags=DETACHED_PROCESS (0x8 — no console so no window; CREATE_NO_WINDOW 0x08000000 is NOT a valid Win32_ProcessStartup flag → ReturnValue 21 invalid-param, which is why the naive port fails) + ShowWindow=SW_HIDE(0) belt, via the ProcessStartupInformation argument. (v0.12.2)",
2026-06-22T00:46:25.5689372Z       "requiredStages": [
2026-06-22T00:46:25.5689476Z         "impl",
2026-06-22T00:46:25.5689580Z         "unit",
2026-06-22T00:46:25.5689686Z         "int"
2026-06-22T00:46:25.5689781Z       ],
2026-06-22T00:46:25.5689881Z       "stages": {
2026-06-22T00:46:25.5689982Z         "doc": {
2026-06-22T00:46:25.5690096Z           "complete": false,
2026-06-22T00:46:25.5690201Z           "evidence": []
2026-06-22T00:46:25.5690302Z         },
2026-06-22T00:46:25.5690402Z         "impl": {
2026-06-22T00:46:25.5690511Z           "complete": true,
2026-06-22T00:46:25.5690622Z           "evidence": [
2026-06-22T00:46:25.5690726Z             {
2026-06-22T00:46:25.5690877Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.5690991Z               "line": 925
2026-06-22T00:46:25.5691092Z             },
2026-06-22T00:46:25.5691196Z             {
2026-06-22T00:46:25.5691331Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.5691440Z               "line": 994
2026-06-22T00:46:25.5691535Z             }
2026-06-22T00:46:25.5691641Z           ]
2026-06-22T00:46:25.5691745Z         },
2026-06-22T00:46:25.5691849Z         "int": {
2026-06-22T00:46:25.5691960Z           "complete": true,
2026-06-22T00:46:25.5692069Z           "evidence": [
2026-06-22T00:46:25.5692174Z             {
2026-06-22T00:46:25.5692317Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-22T00:46:25.5692431Z               "line": 187
2026-06-22T00:46:25.5692537Z             },
2026-06-22T00:46:25.5692746Z             {
2026-06-22T00:46:25.5692890Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-22T00:46:25.5693207Z               "line": 348
2026-06-22T00:46:25.5693316Z             }
2026-06-22T00:46:25.5693415Z           ]
2026-06-22T00:46:25.5693520Z         },
2026-06-22T00:46:25.5693630Z         "unit": {
2026-06-22T00:46:25.5693734Z           "complete": true,
2026-06-22T00:46:25.5693839Z           "evidence": [
2026-06-22T00:46:25.5693940Z             {
2026-06-22T00:46:25.5694082Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.5694184Z               "line": 1206
2026-06-22T00:46:25.5694297Z             },
2026-06-22T00:46:25.5694420Z             {
2026-06-22T00:46:25.5694545Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5694659Z               "line": 8116
2026-06-22T00:46:25.5694764Z             }
2026-06-22T00:46:25.5694860Z           ]
2026-06-22T00:46:25.5694965Z         }
2026-06-22T00:46:25.5695069Z       }
2026-06-22T00:46:25.5695175Z     },
2026-06-22T00:46:25.5695279Z     {
2026-06-22T00:46:25.5695409Z       "id": "REQ-HAZARD-WORKER-PATH",
2026-06-22T00:46:25.5695613Z       "title": "Single source of truth for Worker/Psyche perch location (1.5)",
2026-06-22T00:46:25.5695733Z       "requiredStages": [
2026-06-22T00:46:25.5695838Z         "impl",
2026-06-22T00:46:25.5695946Z         "unit"
2026-06-22T00:46:25.5696051Z       ],
2026-06-22T00:46:25.5696160Z       "stages": {
2026-06-22T00:46:25.5696268Z         "doc": {
2026-06-22T00:46:25.5696377Z           "complete": false,
2026-06-22T00:46:25.5696488Z           "evidence": []
2026-06-22T00:46:25.5696592Z         },
2026-06-22T00:46:25.5696701Z         "impl": {
2026-06-22T00:46:25.5696821Z           "complete": true,
2026-06-22T00:46:25.5696921Z           "evidence": [
2026-06-22T00:46:25.5697031Z             {
2026-06-22T00:46:25.5697169Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T00:46:25.5697273Z               "line": 262
2026-06-22T00:46:25.5697380Z             },
2026-06-22T00:46:25.5697489Z             {
2026-06-22T00:46:25.5697622Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T00:46:25.5697732Z               "line": 307
2026-06-22T00:46:25.5697841Z             },
2026-06-22T00:46:25.5697941Z             {
2026-06-22T00:46:25.5698090Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T00:46:25.5698194Z               "line": 319
2026-06-22T00:46:25.5698305Z             }
2026-06-22T00:46:25.5698410Z           ]
2026-06-22T00:46:25.5698512Z         },
2026-06-22T00:46:25.5698627Z         "int": {
2026-06-22T00:46:25.5698731Z           "complete": false,
2026-06-22T00:46:25.5698848Z           "evidence": []
2026-06-22T00:46:25.5699026Z         },
2026-06-22T00:46:25.5699140Z         "unit": {
2026-06-22T00:46:25.5699258Z           "complete": true,
2026-06-22T00:46:25.5699360Z           "evidence": [
2026-06-22T00:46:25.5699464Z             {
2026-06-22T00:46:25.5699603Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T00:46:25.5699717Z               "line": 455
2026-06-22T00:46:25.5699821Z             },
2026-06-22T00:46:25.5699927Z             {
2026-06-22T00:46:25.5700059Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T00:46:25.5700169Z               "line": 499
2026-06-22T00:46:25.5700266Z             }
2026-06-22T00:46:25.5700370Z           ]
2026-06-22T00:46:25.5700474Z         }
2026-06-22T00:46:25.5700571Z       }
2026-06-22T00:46:25.5700675Z     },
2026-06-22T00:46:25.5700775Z     {
2026-06-22T00:46:25.5700895Z       "id": "REQ-HOST-RUN-1",
2026-06-22T00:46:25.5703320Z       "title": "spt-hosted harness bringup: `spt endpoint run` spawns an adapter's `[session.self]` command template into a broker-held PTY (the spawn-session seam, brain.rs spawn_session_pid — same broker path shellhost.rs launch_shell_brokered_in uses for shells, now for kind=\"harness\" self-role), registers the perch under the given endpoint id, returns the id. Reverses today's harness-hosted-only launch (external launcher → `api bind`). Non-interactive flag set (--adapter <a[:profile]> --id <id> --create --resume <session> --attach|--start|--view) covers every terminal action of the W2 interactive picker so shortcuts (cc-<id>) bake fully non-interactive launches; composite adapter:profile resolves via registry::resolve_option leaf-replace overlay.",
2026-06-22T00:46:25.5703677Z       "requiredStages": [
2026-06-22T00:46:25.5703782Z         "impl",
2026-06-22T00:46:25.5703885Z         "unit",
2026-06-22T00:46:25.5703985Z         "int"
2026-06-22T00:46:25.5704084Z       ],
2026-06-22T00:46:25.5704186Z       "stages": {
2026-06-22T00:46:25.5704294Z         "doc": {
2026-06-22T00:46:25.5704409Z           "complete": false,
2026-06-22T00:46:25.5704524Z           "evidence": []
2026-06-22T00:46:25.5704623Z         },
2026-06-22T00:46:25.5704734Z         "impl": {
2026-06-22T00:46:25.5704838Z           "complete": true,
2026-06-22T00:46:25.5704952Z           "evidence": [
2026-06-22T00:46:25.5705049Z             {
2026-06-22T00:46:25.5705205Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T00:46:25.5705310Z               "line": 30
2026-06-22T00:46:25.5705416Z             },
2026-06-22T00:46:25.5705529Z             {
2026-06-22T00:46:25.5705678Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T00:46:25.5705787Z               "line": 76
2026-06-22T00:46:25.5705887Z             },
2026-06-22T00:46:25.5705993Z             {
2026-06-22T00:46:25.5706144Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T00:46:25.5706250Z               "line": 181
2026-06-22T00:46:25.5706351Z             },
2026-06-22T00:46:25.5706459Z             {
2026-06-22T00:46:25.5706591Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5706701Z               "line": 1266
2026-06-22T00:46:25.5706809Z             }
2026-06-22T00:46:25.5706908Z           ]
2026-06-22T00:46:25.5707009Z         },
2026-06-22T00:46:25.5707119Z         "int": {
2026-06-22T00:46:25.5707228Z           "complete": true,
2026-06-22T00:46:25.5707334Z           "evidence": [
2026-06-22T00:46:25.5707438Z             {
2026-06-22T00:46:25.5707586Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T00:46:25.5707701Z               "line": 288
2026-06-22T00:46:25.5707805Z             }
2026-06-22T00:46:25.5707915Z           ]
2026-06-22T00:46:25.5708020Z         },
2026-06-22T00:46:25.5708125Z         "unit": {
2026-06-22T00:46:25.5708230Z           "complete": true,
2026-06-22T00:46:25.5708340Z           "evidence": [
2026-06-22T00:46:25.5708439Z             {
2026-06-22T00:46:25.5708584Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T00:46:25.5708697Z               "line": 229
2026-06-22T00:46:25.5708793Z             },
2026-06-22T00:46:25.5708899Z             {
2026-06-22T00:46:25.5709129Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T00:46:25.5709244Z               "line": 296
2026-06-22T00:46:25.5709347Z             },
2026-06-22T00:46:25.5709466Z             {
2026-06-22T00:46:25.5709615Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T00:46:25.5709724Z               "line": 419
2026-06-22T00:46:25.5709828Z             }
2026-06-22T00:46:25.5709930Z           ]
2026-06-22T00:46:25.5710029Z         }
2026-06-22T00:46:25.5710129Z       }
2026-06-22T00:46:25.5710225Z     },
2026-06-22T00:46:25.5710334Z     {
2026-06-22T00:46:25.5710444Z       "id": "REQ-HOST-RUN-2",
2026-06-22T00:46:25.5712184Z       "title": "Project-scoped working directory for spt-hosted bringup: `spt endpoint run` lands the broker-spawned harness PTY in the user's PROJECT cwd, not the daemon's, via an additive `SpawnReq.cwd` field carried through the broker PTY spawn (portable-pty CommandBuilder cwd). N-1-safe wire change (additive, defaulted). Required because the consumer (Claude Code) is project-scoped: broker-inherited cwd = the daemon's cwd = the wrong `.claude`, wrong session history, wrong digest source; `cc <id>` at a project root MUST land the harness in that project. W1 ships broker-inherited cwd as a bringup-proof shortcut only; this REQ must land before the M12 gate (doyle, 2026-06-14).",
2026-06-22T00:46:25.5712507Z       "requiredStages": [
2026-06-22T00:46:25.5712611Z         "impl",
2026-06-22T00:46:25.5712723Z         "unit",
2026-06-22T00:46:25.5712827Z         "int"
2026-06-22T00:46:25.5712931Z       ],
2026-06-22T00:46:25.5713032Z       "stages": {
2026-06-22T00:46:25.5713142Z         "doc": {
2026-06-22T00:46:25.5713260Z           "complete": false,
2026-06-22T00:46:25.5713357Z           "evidence": []
2026-06-22T00:46:25.5713466Z         },
2026-06-22T00:46:25.5713561Z         "impl": {
2026-06-22T00:46:25.5713667Z           "complete": true,
2026-06-22T00:46:25.5713772Z           "evidence": [
2026-06-22T00:46:25.5713871Z             {
2026-06-22T00:46:25.5714025Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T00:46:25.5714133Z               "line": 182
2026-06-22T00:46:25.5714251Z             },
2026-06-22T00:46:25.5714351Z             {
2026-06-22T00:46:25.5714492Z               "path": "crates/spt-term/src/pty.rs",
2026-06-22T00:46:25.5714611Z               "line": 113
2026-06-22T00:46:25.5714712Z             }
2026-06-22T00:46:25.5714816Z           ]
2026-06-22T00:46:25.5714916Z         },
2026-06-22T00:46:25.5715032Z         "int": {
2026-06-22T00:46:25.5715145Z           "complete": true,
2026-06-22T00:46:25.5715250Z           "evidence": [
2026-06-22T00:46:25.5715351Z             {
2026-06-22T00:46:25.5715507Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T00:46:25.5715618Z               "line": 575
2026-06-22T00:46:25.5715713Z             }
2026-06-22T00:46:25.5715822Z           ]
2026-06-22T00:46:25.5715923Z         },
2026-06-22T00:46:25.5716032Z         "unit": {
2026-06-22T00:46:25.5716142Z           "complete": true,
2026-06-22T00:46:25.5716258Z           "evidence": [
2026-06-22T00:46:25.5716366Z             {
2026-06-22T00:46:25.5716509Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-22T00:46:25.5716629Z               "line": 86
2026-06-22T00:46:25.5716733Z             }
2026-06-22T00:46:25.5716839Z           ]
2026-06-22T00:46:25.5716949Z         }
2026-06-22T00:46:25.5717047Z       }
2026-06-22T00:46:25.5717151Z     },
2026-06-22T00:46:25.5717252Z     {
2026-06-22T00:46:25.5717369Z       "id": "REQ-INFRA-1",
2026-06-22T00:46:25.5717574Z       "title": "GitHub issue tracking for v1; tangled.org as migration target",
2026-06-22T00:46:25.5717698Z       "requiredStages": [],
2026-06-22T00:46:25.5717807Z       "stages": {
2026-06-22T00:46:25.5717908Z         "doc": {
2026-06-22T00:46:25.5718031Z           "complete": false,
2026-06-22T00:46:25.5718137Z           "evidence": []
2026-06-22T00:46:25.5718246Z         },
2026-06-22T00:46:25.5718346Z         "impl": {
2026-06-22T00:46:25.5718466Z           "complete": false,
2026-06-22T00:46:25.5718575Z           "evidence": []
2026-06-22T00:46:25.5718680Z         },
2026-06-22T00:46:25.5718795Z         "int": {
2026-06-22T00:46:25.5718895Z           "complete": false,
2026-06-22T00:46:25.5719086Z           "evidence": []
2026-06-22T00:46:25.5719196Z         },
2026-06-22T00:46:25.5719300Z         "unit": {
2026-06-22T00:46:25.5719406Z           "complete": false,
2026-06-22T00:46:25.5719520Z           "evidence": []
2026-06-22T00:46:25.5719624Z         }
2026-06-22T00:46:25.5719713Z       }
2026-06-22T00:46:25.5719823Z     },
2026-06-22T00:46:25.5719921Z     {
2026-06-22T00:46:25.5720030Z       "id": "REQ-INST-1",
2026-06-22T00:46:25.5720213Z       "title": "endpoint ID vs instance split (adapter-agnostic ID)",
2026-06-22T00:46:25.5720335Z       "requiredStages": [],
2026-06-22T00:46:25.5720442Z       "stages": {
2026-06-22T00:46:25.5720547Z         "doc": {
2026-06-22T00:46:25.5720660Z           "complete": false,
2026-06-22T00:46:25.5720771Z           "evidence": []
2026-06-22T00:46:25.5720880Z         },
2026-06-22T00:46:25.5720984Z         "impl": {
2026-06-22T00:46:25.5721095Z           "complete": false,
2026-06-22T00:46:25.5721309Z           "evidence": []
2026-06-22T00:46:25.5721410Z         },
2026-06-22T00:46:25.5721609Z         "int": {
2026-06-22T00:46:25.5721711Z           "complete": false,
2026-06-22T00:46:25.5721819Z           "evidence": []
2026-06-22T00:46:25.5721919Z         },
2026-06-22T00:46:25.5722030Z         "unit": {
2026-06-22T00:46:25.5722143Z           "complete": false,
2026-06-22T00:46:25.5722248Z           "evidence": []
2026-06-22T00:46:25.5722354Z         }
2026-06-22T00:46:25.5722458Z       }
2026-06-22T00:46:25.5722557Z     },
2026-06-22T00:46:25.5722653Z     {
2026-06-22T00:46:25.5722768Z       "id": "REQ-INST-10",
2026-06-22T00:46:25.5723006Z       "title": "Qualified addressing [subnet:]id[@node] + ambiguity forces qualification",
2026-06-22T00:46:25.5723116Z       "requiredStages": [
2026-06-22T00:46:25.5723224Z         "impl",
2026-06-22T00:46:25.5723326Z         "unit"
2026-06-22T00:46:25.5723426Z       ],
2026-06-22T00:46:25.5723524Z       "stages": {
2026-06-22T00:46:25.5723645Z         "doc": {
2026-06-22T00:46:25.5723754Z           "complete": false,
2026-06-22T00:46:25.5723859Z           "evidence": []
2026-06-22T00:46:25.5723970Z         },
2026-06-22T00:46:25.5724073Z         "impl": {
2026-06-22T00:46:25.5724178Z           "complete": true,
2026-06-22T00:46:25.5724279Z           "evidence": [
2026-06-22T00:46:25.5724388Z             {
2026-06-22T00:46:25.5724536Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.5724646Z               "line": 648
2026-06-22T00:46:25.5724754Z             },
2026-06-22T00:46:25.5724854Z             {
2026-06-22T00:46:25.5724992Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.5725095Z               "line": 725
2026-06-22T00:46:25.5725205Z             },
2026-06-22T00:46:25.5725306Z             {
2026-06-22T00:46:25.5725443Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-22T00:46:25.5725553Z               "line": 13
2026-06-22T00:46:25.5725663Z             },
2026-06-22T00:46:25.5725772Z             {
2026-06-22T00:46:25.5725907Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-22T00:46:25.5726020Z               "line": 67
2026-06-22T00:46:25.5726125Z             },
2026-06-22T00:46:25.5726226Z             {
2026-06-22T00:46:25.5726354Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T00:46:25.5726464Z               "line": 18
2026-06-22T00:46:25.5726569Z             },
2026-06-22T00:46:25.5726664Z             {
2026-06-22T00:46:25.5726799Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T00:46:25.5726912Z               "line": 444
2026-06-22T00:46:25.5727012Z             }
2026-06-22T00:46:25.5727118Z           ]
2026-06-22T00:46:25.5727222Z         },
2026-06-22T00:46:25.5727331Z         "int": {
2026-06-22T00:46:25.5727481Z           "complete": false,
2026-06-22T00:46:25.5727612Z           "evidence": []
2026-06-22T00:46:25.5727726Z         },
2026-06-22T00:46:25.5727822Z         "unit": {
2026-06-22T00:46:25.5727948Z           "complete": true,
2026-06-22T00:46:25.5728058Z           "evidence": [
2026-06-22T00:46:25.5728163Z             {
2026-06-22T00:46:25.5728310Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.5728421Z               "line": 932
2026-06-22T00:46:25.5728531Z             },
2026-06-22T00:46:25.5728630Z             {
2026-06-22T00:46:25.5728779Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.5728878Z               "line": 1309
2026-06-22T00:46:25.5729079Z             },
2026-06-22T00:46:25.5729183Z             {
2026-06-22T00:46:25.5729316Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.5729422Z               "line": 1320
2026-06-22T00:46:25.5729526Z             },
2026-06-22T00:46:25.5729631Z             {
2026-06-22T00:46:25.5729775Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.5729889Z               "line": 1336
2026-06-22T00:46:25.5729995Z             },
2026-06-22T00:46:25.5730208Z             {
2026-06-22T00:46:25.5730360Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.5730571Z               "line": 1352
2026-06-22T00:46:25.5730677Z             },
2026-06-22T00:46:25.5730773Z             {
2026-06-22T00:46:25.5730920Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.5731030Z               "line": 1374
2026-06-22T00:46:25.5731135Z             },
2026-06-22T00:46:25.5731239Z             {
2026-06-22T00:46:25.5731383Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.5731492Z               "line": 1679
2026-06-22T00:46:25.5731598Z             },
2026-06-22T00:46:25.5731702Z             {
2026-06-22T00:46:25.5731850Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-22T00:46:25.5731947Z               "line": 130
2026-06-22T00:46:25.5732055Z             },
2026-06-22T00:46:25.5732155Z             {
2026-06-22T00:46:25.5732294Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-22T00:46:25.5732417Z               "line": 167
2026-06-22T00:46:25.5732518Z             },
2026-06-22T00:46:25.5732633Z             {
2026-06-22T00:46:25.5732766Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-22T00:46:25.5732876Z               "line": 175
2026-06-22T00:46:25.5732976Z             },
2026-06-22T00:46:25.5733079Z             {
2026-06-22T00:46:25.5733203Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-22T00:46:25.5733314Z               "line": 183
2026-06-22T00:46:25.5733417Z             },
2026-06-22T00:46:25.5733513Z             {
2026-06-22T00:46:25.5733647Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T00:46:25.5733755Z               "line": 896
2026-06-22T00:46:25.5733857Z             }
2026-06-22T00:46:25.5733962Z           ]
2026-06-22T00:46:25.5734066Z         }
2026-06-22T00:46:25.5734172Z       }
2026-06-22T00:46:25.5734277Z     },
2026-06-22T00:46:25.5734381Z     {
2026-06-22T00:46:25.5734487Z       "id": "REQ-INST-11",
2026-06-22T00:46:25.5734738Z       "title": "spt rename <id> rippled to all instances (collision-checked, 6.5-reconciled)",
2026-06-22T00:46:25.5734863Z       "requiredStages": [
2026-06-22T00:46:25.5734967Z         "impl",
2026-06-22T00:46:25.5735077Z         "unit"
2026-06-22T00:46:25.5735169Z       ],
2026-06-22T00:46:25.5735272Z       "stages": {
2026-06-22T00:46:25.5735367Z         "doc": {
2026-06-22T00:46:25.5735481Z           "complete": false,
2026-06-22T00:46:25.5735589Z           "evidence": []
2026-06-22T00:46:25.5735693Z         },
2026-06-22T00:46:25.5735798Z         "impl": {
2026-06-22T00:46:25.5735908Z           "complete": true,
2026-06-22T00:46:25.5736022Z           "evidence": [
2026-06-22T00:46:25.5736123Z             {
2026-06-22T00:46:25.5736271Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.5736370Z               "line": 514
2026-06-22T00:46:25.5736467Z             },
2026-06-22T00:46:25.5736571Z             {
2026-06-22T00:46:25.5736715Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T00:46:25.5736833Z               "line": 297
2026-06-22T00:46:25.5736942Z             },
2026-06-22T00:46:25.5737049Z             {
2026-06-22T00:46:25.5737196Z               "path": "crates/spt-store/src/rename.rs",
2026-06-22T00:46:25.5737305Z               "line": 59
2026-06-22T00:46:25.5737406Z             },
2026-06-22T00:46:25.5737510Z             {
2026-06-22T00:46:25.5737639Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5737750Z               "line": 5291
2026-06-22T00:46:25.5737853Z             },
2026-06-22T00:46:25.5737954Z             {
2026-06-22T00:46:25.5738084Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5738201Z               "line": 7137
2026-06-22T00:46:25.5738301Z             }
2026-06-22T00:46:25.5738405Z           ]
2026-06-22T00:46:25.5738503Z         },
2026-06-22T00:46:25.5738613Z         "int": {
2026-06-22T00:46:25.5738723Z           "complete": false,
2026-06-22T00:46:25.5738913Z           "evidence": []
2026-06-22T00:46:25.5739091Z         },
2026-06-22T00:46:25.5739194Z         "unit": {
2026-06-22T00:46:25.5739395Z           "complete": true,
2026-06-22T00:46:25.5739504Z           "evidence": [
2026-06-22T00:46:25.5739605Z             {
2026-06-22T00:46:25.5739753Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.5742845Z               "line": 1479
2026-06-22T00:46:25.5742953Z             },
2026-06-22T00:46:25.5743058Z             {
2026-06-22T00:46:25.5743216Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.5743326Z               "line": 1512
2026-06-22T00:46:25.5743431Z             },
2026-06-22T00:46:25.5743536Z             {
2026-06-22T00:46:25.5743696Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T00:46:25.5743797Z               "line": 527
2026-06-22T00:46:25.5743897Z             },
2026-06-22T00:46:25.5744001Z             {
2026-06-22T00:46:25.5744131Z               "path": "crates/spt-store/src/rename.rs",
2026-06-22T00:46:25.5744259Z               "line": 160
2026-06-22T00:46:25.5744369Z             },
2026-06-22T00:46:25.5744479Z             {
2026-06-22T00:46:25.5744626Z               "path": "crates/spt-store/src/rename.rs",
2026-06-22T00:46:25.5744732Z               "line": 190
2026-06-22T00:46:25.5744837Z             },
2026-06-22T00:46:25.5744936Z             {
2026-06-22T00:46:25.5745076Z               "path": "crates/spt-store/src/rename.rs",
2026-06-22T00:46:25.5745184Z               "line": 225
2026-06-22T00:46:25.5745279Z             },
2026-06-22T00:46:25.5745391Z             {
2026-06-22T00:46:25.5745518Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5745637Z               "line": 7994
2026-06-22T00:46:25.5745729Z             }
2026-06-22T00:46:25.5745832Z           ]
2026-06-22T00:46:25.5745941Z         }
2026-06-22T00:46:25.5746046Z       }
2026-06-22T00:46:25.5746149Z     },
2026-06-22T00:46:25.5746248Z     {
2026-06-22T00:46:25.5746368Z       "id": "REQ-INST-12",
2026-06-22T00:46:25.5746669Z       "title": "Endpoint visibility per-(endpoint,subnet): excluded semantics, OR-of-defaults + override, gates sync",
2026-06-22T00:46:25.5746788Z       "requiredStages": [
2026-06-22T00:46:25.5746897Z         "impl",
2026-06-22T00:46:25.5746998Z         "unit"
2026-06-22T00:46:25.5747098Z       ],
2026-06-22T00:46:25.5747202Z       "stages": {
2026-06-22T00:46:25.5747308Z         "doc": {
2026-06-22T00:46:25.5747422Z           "complete": false,
2026-06-22T00:46:25.5747536Z           "evidence": []
2026-06-22T00:46:25.5747642Z         },
2026-06-22T00:46:25.5747746Z         "impl": {
2026-06-22T00:46:25.5747860Z           "complete": true,
2026-06-22T00:46:25.5747966Z           "evidence": [
2026-06-22T00:46:25.5748075Z             {
2026-06-22T00:46:25.5748229Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.5748338Z               "line": 566
2026-06-22T00:46:25.5748438Z             },
2026-06-22T00:46:25.5748534Z             {
2026-06-22T00:46:25.5748690Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.5748789Z               "line": 659
2026-06-22T00:46:25.5748899Z             },
2026-06-22T00:46:25.5749078Z             {
2026-06-22T00:46:25.5749221Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.5749336Z               "line": 739
2026-06-22T00:46:25.5749440Z             },
2026-06-22T00:46:25.5749546Z             {
2026-06-22T00:46:25.5749689Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T00:46:25.5749798Z               "line": 96
2026-06-22T00:46:25.5749899Z             },
2026-06-22T00:46:25.5749994Z             {
2026-06-22T00:46:25.5750132Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T00:46:25.5750242Z               "line": 269
2026-06-22T00:46:25.5750347Z             },
2026-06-22T00:46:25.5750441Z             {
2026-06-22T00:46:25.5750594Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T00:46:25.5750834Z               "line": 148
2026-06-22T00:46:25.5750937Z             }
2026-06-22T00:46:25.5751047Z           ]
2026-06-22T00:46:25.5751238Z         },
2026-06-22T00:46:25.5751347Z         "int": {
2026-06-22T00:46:25.5751456Z           "complete": false,
2026-06-22T00:46:25.5751565Z           "evidence": []
2026-06-22T00:46:25.5751668Z         },
2026-06-22T00:46:25.5751778Z         "unit": {
2026-06-22T00:46:25.5751894Z           "complete": true,
2026-06-22T00:46:25.5751997Z           "evidence": [
2026-06-22T00:46:25.5752093Z             {
2026-06-22T00:46:25.5752241Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.5752345Z               "line": 1554
2026-06-22T00:46:25.5752452Z             },
2026-06-22T00:46:25.5752560Z             {
2026-06-22T00:46:25.5752699Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.5752794Z               "line": 1577
2026-06-22T00:46:25.5752903Z             },
2026-06-22T00:46:25.5753003Z             {
2026-06-22T00:46:25.5753156Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.5753266Z               "line": 1614
2026-06-22T00:46:25.5753372Z             },
2026-06-22T00:46:25.5753475Z             {
2026-06-22T00:46:25.5753614Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T00:46:25.5753725Z               "line": 457
2026-06-22T00:46:25.5753828Z             },
2026-06-22T00:46:25.5753934Z             {
2026-06-22T00:46:25.5754077Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T00:46:25.5754180Z               "line": 185
2026-06-22T00:46:25.5754280Z             },
2026-06-22T00:46:25.5754381Z             {
2026-06-22T00:46:25.5754514Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T00:46:25.5754619Z               "line": 206
2026-06-22T00:46:25.5754725Z             },
2026-06-22T00:46:25.5754828Z             {
2026-06-22T00:46:25.5754953Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T00:46:25.5755063Z               "line": 232
2026-06-22T00:46:25.5755162Z             }
2026-06-22T00:46:25.5755268Z           ]
2026-06-22T00:46:25.5755373Z         }
2026-06-22T00:46:25.5755477Z       }
2026-06-22T00:46:25.5755583Z     },
2026-06-22T00:46:25.5755688Z     {
2026-06-22T00:46:25.5755806Z       "id": "REQ-INST-13",
2026-06-22T00:46:25.5756012Z       "title": "Subnet-exclusive sync + per-endpoint subnet-membership list",
2026-06-22T00:46:25.5756135Z       "requiredStages": [
2026-06-22T00:46:25.5756236Z         "impl",
2026-06-22T00:46:25.5756341Z         "unit"
2026-06-22T00:46:25.5756444Z       ],
2026-06-22T00:46:25.5756544Z       "stages": {
2026-06-22T00:46:25.5756653Z         "doc": {
2026-06-22T00:46:25.5756762Z           "complete": false,
2026-06-22T00:46:25.5756871Z           "evidence": []
2026-06-22T00:46:25.5756972Z         },
2026-06-22T00:46:25.5757081Z         "impl": {
2026-06-22T00:46:25.5757185Z           "complete": true,
2026-06-22T00:46:25.5757292Z           "evidence": [
2026-06-22T00:46:25.5757405Z             {
2026-06-22T00:46:25.5757535Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T00:46:25.5757653Z               "line": 100
2026-06-22T00:46:25.5757748Z             },
2026-06-22T00:46:25.5757855Z             {
2026-06-22T00:46:25.5757997Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T00:46:25.5758106Z               "line": 171
2026-06-22T00:46:25.5758211Z             }
2026-06-22T00:46:25.5758311Z           ]
2026-06-22T00:46:25.5758415Z         },
2026-06-22T00:46:25.5758517Z         "int": {
2026-06-22T00:46:25.5758635Z           "complete": false,
2026-06-22T00:46:25.5758740Z           "evidence": []
2026-06-22T00:46:25.5758837Z         },
2026-06-22T00:46:25.5759022Z         "unit": {
2026-06-22T00:46:25.5759142Z           "complete": true,
2026-06-22T00:46:25.5759246Z           "evidence": [
2026-06-22T00:46:25.5759349Z             {
2026-06-22T00:46:25.5759492Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T00:46:25.5759704Z               "line": 261
2026-06-22T00:46:25.5759810Z             },
2026-06-22T00:46:25.5760005Z             {
2026-06-22T00:46:25.5760149Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T00:46:25.5760253Z               "line": 279
2026-06-22T00:46:25.5760348Z             }
2026-06-22T00:46:25.5760454Z           ]
2026-06-22T00:46:25.5760559Z         }
2026-06-22T00:46:25.5760653Z       }
2026-06-22T00:46:25.5760759Z     },
2026-06-22T00:46:25.5760858Z     {
2026-06-22T00:46:25.5760973Z       "id": "REQ-INST-14",
2026-06-22T00:46:25.5761366Z       "title": "Resource advertisement (subnet resource registry): free-text blurb, both-authored, registry projection, visibility/whitelist-gated",
2026-06-22T00:46:25.5761479Z       "requiredStages": [
2026-06-22T00:46:25.5761579Z         "doc",
2026-06-22T00:46:25.5761685Z         "impl",
2026-06-22T00:46:25.5761789Z         "unit"
2026-06-22T00:46:25.5761888Z       ],
2026-06-22T00:46:25.5761997Z       "stages": {
2026-06-22T00:46:25.5762106Z         "doc": {
2026-06-22T00:46:25.5762219Z           "complete": true,
2026-06-22T00:46:25.5762338Z           "evidence": [
2026-06-22T00:46:25.5762445Z             {
2026-06-22T00:46:25.5762562Z               "path": "CONTEXT.md",
2026-06-22T00:46:25.5762668Z               "line": 588
2026-06-22T00:46:25.5762773Z             },
2026-06-22T00:46:25.5762877Z             {
2026-06-22T00:46:25.5762992Z               "path": "docs/STORAGE.md",
2026-06-22T00:46:25.5763102Z               "line": 49
2026-06-22T00:46:25.5763201Z             }
2026-06-22T00:46:25.5763307Z           ]
2026-06-22T00:46:25.5763406Z         },
2026-06-22T00:46:25.5763511Z         "impl": {
2026-06-22T00:46:25.5763632Z           "complete": true,
2026-06-22T00:46:25.5763735Z           "evidence": [
2026-06-22T00:46:25.5763840Z             {
2026-06-22T00:46:25.5763999Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.5764112Z               "line": 410
2026-06-22T00:46:25.5764218Z             },
2026-06-22T00:46:25.5764323Z             {
2026-06-22T00:46:25.5764470Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.5764590Z               "line": 367
2026-06-22T00:46:25.5764693Z             },
2026-06-22T00:46:25.5764793Z             {
2026-06-22T00:46:25.5764922Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T00:46:25.5765027Z               "line": 293
2026-06-22T00:46:25.5765131Z             },
2026-06-22T00:46:25.5765232Z             {
2026-06-22T00:46:25.5765356Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5765455Z               "line": 1577
2026-06-22T00:46:25.5765557Z             }
2026-06-22T00:46:25.5765652Z           ]
2026-06-22T00:46:25.5765751Z         },
2026-06-22T00:46:25.5765857Z         "int": {
2026-06-22T00:46:25.5765961Z           "complete": false,
2026-06-22T00:46:25.5766070Z           "evidence": []
2026-06-22T00:46:25.5766177Z         },
2026-06-22T00:46:25.5766285Z         "unit": {
2026-06-22T00:46:25.5766405Z           "complete": true,
2026-06-22T00:46:25.5766501Z           "evidence": [
2026-06-22T00:46:25.5766614Z             {
2026-06-22T00:46:25.5766762Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.5766873Z               "line": 1163
2026-06-22T00:46:25.5766981Z             },
2026-06-22T00:46:25.5767085Z             {
2026-06-22T00:46:25.5767237Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.5767345Z               "line": 944
2026-06-22T00:46:25.5767450Z             },
2026-06-22T00:46:25.5767556Z             {
2026-06-22T00:46:25.5767688Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.5767799Z               "line": 1205
2026-06-22T00:46:25.5767908Z             },
2026-06-22T00:46:25.5768007Z             {
2026-06-22T00:46:25.5768142Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T00:46:25.5768242Z               "line": 659
2026-06-22T00:46:25.5768351Z             },
2026-06-22T00:46:25.5768661Z             {
2026-06-22T00:46:25.5768795Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5769068Z               "line": 8070
2026-06-22T00:46:25.5769176Z             }
2026-06-22T00:46:25.5769272Z           ]
2026-06-22T00:46:25.5769378Z         }
2026-06-22T00:46:25.5769486Z       }
2026-06-22T00:46:25.5769572Z     },
2026-06-22T00:46:25.5769673Z     {
2026-06-22T00:46:25.5769782Z       "id": "REQ-INST-15",
2026-06-22T00:46:25.5770527Z       "title": "Immutable home subnet (assigned at creation: auto-if-one/ask-if-many) + spt fork (cross-subnet clone to a new identity, copy-then-diverge, not re-home); adapter chosen at creation from registered hostable adapters, changed only via launch/resume-under-new (ADR-0010)",
2026-06-22T00:46:25.5770637Z       "requiredStages": [
2026-06-22T00:46:25.5770742Z         "doc",
2026-06-22T00:46:25.5770851Z         "impl",
2026-06-22T00:46:25.5770952Z         "unit"
2026-06-22T00:46:25.5771052Z       ],
2026-06-22T00:46:25.5771166Z       "stages": {
2026-06-22T00:46:25.5771271Z         "doc": {
2026-06-22T00:46:25.5771386Z           "complete": true,
2026-06-22T00:46:25.5771500Z           "evidence": [
2026-06-22T00:46:25.5771606Z             {
2026-06-22T00:46:25.5771800Z               "path": "docs/adr/0010-immutable-home-subnet-fork-not-rehome.md",
2026-06-22T00:46:25.5771911Z               "line": 3
2026-06-22T00:46:25.5772011Z             }
2026-06-22T00:46:25.5772115Z           ]
2026-06-22T00:46:25.5772216Z         },
2026-06-22T00:46:25.5772316Z         "impl": {
2026-06-22T00:46:25.5772424Z           "complete": true,
2026-06-22T00:46:25.5772528Z           "evidence": [
2026-06-22T00:46:25.5772629Z             {
2026-06-22T00:46:25.5772774Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.5772889Z               "line": 353
2026-06-22T00:46:25.5772985Z             },
2026-06-22T00:46:25.5773089Z             {
2026-06-22T00:46:25.5773223Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T00:46:25.5773333Z               "line": 60
2026-06-22T00:46:25.5773441Z             },
2026-06-22T00:46:25.5773552Z             {
2026-06-22T00:46:25.5773705Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T00:46:25.5773809Z               "line": 368
2026-06-22T00:46:25.5773905Z             },
2026-06-22T00:46:25.5774010Z             {
2026-06-22T00:46:25.5774148Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T00:46:25.5774258Z               "line": 417
2026-06-22T00:46:25.5774358Z             },
2026-06-22T00:46:25.5774463Z             {
2026-06-22T00:46:25.5774601Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T00:46:25.5774705Z               "line": 19
2026-06-22T00:46:25.5774812Z             },
2026-06-22T00:46:25.5774906Z             {
2026-06-22T00:46:25.5775034Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T00:46:25.5775136Z               "line": 70
2026-06-22T00:46:25.5775245Z             },
2026-06-22T00:46:25.5775358Z             {
2026-06-22T00:46:25.5775487Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T00:46:25.5775597Z               "line": 96
2026-06-22T00:46:25.5775701Z             },
2026-06-22T00:46:25.5775797Z             {
2026-06-22T00:46:25.5775935Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T00:46:25.5776034Z               "line": 121
2026-06-22T00:46:25.5776146Z             },
2026-06-22T00:46:25.5776245Z             {
2026-06-22T00:46:25.5776374Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T00:46:25.5776479Z               "line": 172
2026-06-22T00:46:25.5776583Z             },
2026-06-22T00:46:25.5776674Z             {
2026-06-22T00:46:25.5776817Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.5776926Z               "line": 178
2026-06-22T00:46:25.5777023Z             },
2026-06-22T00:46:25.5777127Z             {
2026-06-22T00:46:25.5777246Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5777466Z               "line": 1469
2026-06-22T00:46:25.5777570Z             }
2026-06-22T00:46:25.5777679Z           ]
2026-06-22T00:46:25.5777877Z         },
2026-06-22T00:46:25.5777982Z         "int": {
2026-06-22T00:46:25.5778102Z           "complete": false,
2026-06-22T00:46:25.5778210Z           "evidence": []
2026-06-22T00:46:25.5778306Z         },
2026-06-22T00:46:25.5778407Z         "unit": {
2026-06-22T00:46:25.5778515Z           "complete": true,
2026-06-22T00:46:25.5778635Z           "evidence": [
2026-06-22T00:46:25.5778731Z             {
2026-06-22T00:46:25.5778883Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T00:46:25.5779064Z               "line": 577
2026-06-22T00:46:25.5779173Z             },
2026-06-22T00:46:25.5779270Z             {
2026-06-22T00:46:25.5779417Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T00:46:25.5779522Z               "line": 638
2026-06-22T00:46:25.5779628Z             },
2026-06-22T00:46:25.5779732Z             {
2026-06-22T00:46:25.5779870Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T00:46:25.5779985Z               "line": 213
2026-06-22T00:46:25.5780084Z             },
2026-06-22T00:46:25.5780180Z             {
2026-06-22T00:46:25.5780314Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T00:46:25.5780422Z               "line": 249
2026-06-22T00:46:25.5780522Z             },
2026-06-22T00:46:25.5780622Z             {
2026-06-22T00:46:25.5780749Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T00:46:25.5780854Z               "line": 262
2026-06-22T00:46:25.5780959Z             },
2026-06-22T00:46:25.5781068Z             {
2026-06-22T00:46:25.5781192Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T00:46:25.5781312Z               "line": 338
2026-06-22T00:46:25.5781402Z             },
2026-06-22T00:46:25.5781502Z             {
2026-06-22T00:46:25.5781641Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.5781750Z               "line": 690
2026-06-22T00:46:25.5781856Z             },
2026-06-22T00:46:25.5781960Z             {
2026-06-22T00:46:25.5782088Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5782195Z               "line": 8007
2026-06-22T00:46:25.5782299Z             },
2026-06-22T00:46:25.5782403Z             {
2026-06-22T00:46:25.5782528Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5782637Z               "line": 9837
2026-06-22T00:46:25.5782737Z             }
2026-06-22T00:46:25.5782838Z           ]
2026-06-22T00:46:25.5782937Z         }
2026-06-22T00:46:25.5783027Z       }
2026-06-22T00:46:25.5783132Z     },
2026-06-22T00:46:25.5783222Z     {
2026-06-22T00:46:25.5783339Z       "id": "REQ-INST-2",
2026-06-22T00:46:25.5783482Z       "title": "Per-node files, synced Psyche mind",
2026-06-22T00:46:25.5783593Z       "requiredStages": [
2026-06-22T00:46:25.5783696Z         "impl",
2026-06-22T00:46:25.5783798Z         "unit"
2026-06-22T00:46:25.5783903Z       ],
2026-06-22T00:46:25.5784006Z       "stages": {
2026-06-22T00:46:25.5784117Z         "doc": {
2026-06-22T00:46:25.5784217Z           "complete": false,
2026-06-22T00:46:25.5784340Z           "evidence": []
2026-06-22T00:46:25.5784437Z         },
2026-06-22T00:46:25.5784541Z         "impl": {
2026-06-22T00:46:25.5784655Z           "complete": true,
2026-06-22T00:46:25.5784771Z           "evidence": [
2026-06-22T00:46:25.5784875Z             {
2026-06-22T00:46:25.5785023Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T00:46:25.5785137Z               "line": 108
2026-06-22T00:46:25.5785238Z             },
2026-06-22T00:46:25.5785343Z             {
2026-06-22T00:46:25.5785490Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T00:46:25.5785594Z               "line": 28
2026-06-22T00:46:25.5785696Z             },
2026-06-22T00:46:25.5785795Z             {
2026-06-22T00:46:25.5785937Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T00:46:25.5786052Z               "line": 74
2026-06-22T00:46:25.5786266Z             },
2026-06-22T00:46:25.5786357Z             {
2026-06-22T00:46:25.5786495Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T00:46:25.5786696Z               "line": 96
2026-06-22T00:46:25.5786801Z             },
2026-06-22T00:46:25.5786905Z             {
2026-06-22T00:46:25.5787044Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T00:46:25.5787153Z               "line": 86
2026-06-22T00:46:25.5787263Z             },
2026-06-22T00:46:25.5787364Z             {
2026-06-22T00:46:25.5787496Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T00:46:25.5787602Z               "line": 118
2026-06-22T00:46:25.5787711Z             }
2026-06-22T00:46:25.5787811Z           ]
2026-06-22T00:46:25.5787922Z         },
2026-06-22T00:46:25.5788026Z         "int": {
2026-06-22T00:46:25.5788139Z           "complete": false,
2026-06-22T00:46:25.5788244Z           "evidence": []
2026-06-22T00:46:25.5788348Z         },
2026-06-22T00:46:25.5788451Z         "unit": {
2026-06-22T00:46:25.5788561Z           "complete": true,
2026-06-22T00:46:25.5788667Z           "evidence": [
2026-06-22T00:46:25.5788775Z             {
2026-06-22T00:46:25.5788914Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T00:46:25.5789095Z               "line": 250
2026-06-22T00:46:25.5789200Z             },
2026-06-22T00:46:25.5789305Z             {
2026-06-22T00:46:25.5789438Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T00:46:25.5789549Z               "line": 280
2026-06-22T00:46:25.5789658Z             }
2026-06-22T00:46:25.5789762Z           ]
2026-06-22T00:46:25.5789868Z         }
2026-06-22T00:46:25.5789958Z       }
2026-06-22T00:46:25.5790063Z     },
2026-06-22T00:46:25.5790164Z     {
2026-06-22T00:46:25.5790268Z       "id": "REQ-INST-3",
2026-06-22T00:46:25.5790440Z       "title": "Dormant (warm) / suspended (cold) resting states",
2026-06-22T00:46:25.5790546Z       "requiredStages": [
2026-06-22T00:46:25.5790649Z         "doc",
2026-06-22T00:46:25.5790755Z         "impl",
2026-06-22T00:46:25.5790861Z         "unit"
2026-06-22T00:46:25.5790964Z       ],
2026-06-22T00:46:25.5791072Z       "stages": {
2026-06-22T00:46:25.5791178Z         "doc": {
2026-06-22T00:46:25.5791290Z           "complete": true,
2026-06-22T00:46:25.5791389Z           "evidence": [
2026-06-22T00:46:25.5791491Z             {
2026-06-22T00:46:25.5791633Z               "path": "docs/DORMANCY-BUDGET.md",
2026-06-22T00:46:25.5791738Z               "line": 3
2026-06-22T00:46:25.5791839Z             }
2026-06-22T00:46:25.5791947Z           ]
2026-06-22T00:46:25.5792048Z         },
2026-06-22T00:46:25.5792158Z         "impl": {
2026-06-22T00:46:25.5792262Z           "complete": true,
2026-06-22T00:46:25.5792373Z           "evidence": [
2026-06-22T00:46:25.5792473Z             {
2026-06-22T00:46:25.5792615Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T00:46:25.5792721Z               "line": 60
2026-06-22T00:46:25.5792821Z             },
2026-06-22T00:46:25.5792930Z             {
2026-06-22T00:46:25.5793079Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T00:46:25.5793192Z               "line": 480
2026-06-22T00:46:25.5793288Z             },
2026-06-22T00:46:25.5793394Z             {
2026-06-22T00:46:25.5793549Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T00:46:25.5793654Z               "line": 254
2026-06-22T00:46:25.5793758Z             },
2026-06-22T00:46:25.5793862Z             {
2026-06-22T00:46:25.5794004Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T00:46:25.5794110Z               "line": 384
2026-06-22T00:46:25.5794219Z             },
2026-06-22T00:46:25.5794324Z             {
2026-06-22T00:46:25.5794472Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T00:46:25.5794586Z               "line": 418
2026-06-22T00:46:25.5794687Z             },
2026-06-22T00:46:25.5794791Z             {
2026-06-22T00:46:25.5794939Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-22T00:46:25.5795158Z               "line": 74
2026-06-22T00:46:25.5795263Z             },
2026-06-22T00:46:25.5795454Z             {
2026-06-22T00:46:25.5795603Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.5795711Z               "line": 234
2026-06-22T00:46:25.5795816Z             },
2026-06-22T00:46:25.5795918Z             {
2026-06-22T00:46:25.5796069Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.5796189Z               "line": 396
2026-06-22T00:46:25.5796285Z             },
2026-06-22T00:46:25.5796388Z             {
2026-06-22T00:46:25.5796525Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T00:46:25.5796641Z               "line": 45
2026-06-22T00:46:25.5796745Z             },
2026-06-22T00:46:25.5796850Z             {
2026-06-22T00:46:25.5796988Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T00:46:25.5797093Z               "line": 114
2026-06-22T00:46:25.5797194Z             },
2026-06-22T00:46:25.5797299Z             {
2026-06-22T00:46:25.5797431Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T00:46:25.5797552Z               "line": 152
2026-06-22T00:46:25.5797651Z             },
2026-06-22T00:46:25.5797755Z             {
2026-06-22T00:46:25.5797886Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T00:46:25.5797989Z               "line": 168
2026-06-22T00:46:25.5798089Z             },
2026-06-22T00:46:25.5798186Z             {
2026-06-22T00:46:25.5798332Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T00:46:25.5798443Z               "line": 178
2026-06-22T00:46:25.5798544Z             },
2026-06-22T00:46:25.5798647Z             {
2026-06-22T00:46:25.5798795Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T00:46:25.5798899Z               "line": 210
2026-06-22T00:46:25.5799087Z             },
2026-06-22T00:46:25.5799198Z             {
2026-06-22T00:46:25.5799330Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T00:46:25.5799450Z               "line": 287
2026-06-22T00:46:25.5799555Z             },
2026-06-22T00:46:25.5799664Z             {
2026-06-22T00:46:25.5799794Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T00:46:25.5799894Z               "line": 311
2026-06-22T00:46:25.5799998Z             },
2026-06-22T00:46:25.5800099Z             {
2026-06-22T00:46:25.5800242Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T00:46:25.5800347Z               "line": 389
2026-06-22T00:46:25.5800452Z             },
2026-06-22T00:46:25.5800552Z             {
2026-06-22T00:46:25.5800690Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T00:46:25.5800800Z               "line": 438
2026-06-22T00:46:25.5800905Z             },
2026-06-22T00:46:25.5801005Z             {
2026-06-22T00:46:25.5801139Z               "path": "crates/spt-daemon/tests/budget.rs",
2026-06-22T00:46:25.5801248Z               "line": 37
2026-06-22T00:46:25.5801354Z             },
2026-06-22T00:46:25.5801458Z             {
2026-06-22T00:46:25.5801604Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.5801714Z               "line": 62
2026-06-22T00:46:25.5801817Z             },
2026-06-22T00:46:25.5801921Z             {
2026-06-22T00:46:25.5802065Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T00:46:25.5802179Z               "line": 279
2026-06-22T00:46:25.5802283Z             },
2026-06-22T00:46:25.5802389Z             {
2026-06-22T00:46:25.5802507Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5802618Z               "line": 1848
2026-06-22T00:46:25.5802718Z             }
2026-06-22T00:46:25.5802827Z           ]
2026-06-22T00:46:25.5802933Z         },
2026-06-22T00:46:25.5803042Z         "int": {
2026-06-22T00:46:25.5803151Z           "complete": false,
2026-06-22T00:46:25.5803257Z           "evidence": []
2026-06-22T00:46:25.5803362Z         },
2026-06-22T00:46:25.5803461Z         "unit": {
2026-06-22T00:46:25.5803696Z           "complete": true,
2026-06-22T00:46:25.5803805Z           "evidence": [
2026-06-22T00:46:25.5804011Z             {
2026-06-22T00:46:25.5804161Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T00:46:25.5804271Z               "line": 360
2026-06-22T00:46:25.5804370Z             },
2026-06-22T00:46:25.5804469Z             {
2026-06-22T00:46:25.5804622Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T00:46:25.5804727Z               "line": 837
2026-06-22T00:46:25.5804831Z             },
2026-06-22T00:46:25.5804937Z             {
2026-06-22T00:46:25.5805070Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T00:46:25.5805184Z               "line": 894
2026-06-22T00:46:25.5805290Z             },
2026-06-22T00:46:25.5805389Z             {
2026-06-22T00:46:25.5805538Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T00:46:25.5805642Z               "line": 889
2026-06-22T00:46:25.5805761Z             },
2026-06-22T00:46:25.5805863Z             {
2026-06-22T00:46:25.5806014Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T00:46:25.5806119Z               "line": 1014
2026-06-22T00:46:25.5806215Z             },
2026-06-22T00:46:25.5806324Z             {
2026-06-22T00:46:25.5806473Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.5806586Z               "line": 1264
2026-06-22T00:46:25.5806691Z             },
2026-06-22T00:46:25.5806797Z             {
2026-06-22T00:46:25.5806943Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.5807047Z               "line": 1405
2026-06-22T00:46:25.5807158Z             },
2026-06-22T00:46:25.5807258Z             {
2026-06-22T00:46:25.5807396Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T00:46:25.5807506Z               "line": 449
2026-06-22T00:46:25.5807615Z             },
2026-06-22T00:46:25.5807715Z             {
2026-06-22T00:46:25.5807854Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T00:46:25.5807973Z               "line": 485
2026-06-22T00:46:25.5808078Z             },
2026-06-22T00:46:25.5808178Z             {
2026-06-22T00:46:25.5808316Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T00:46:25.5808427Z               "line": 540
2026-06-22T00:46:25.5808521Z             },
2026-06-22T00:46:25.5808630Z             {
2026-06-22T00:46:25.5808770Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T00:46:25.5808874Z               "line": 697
2026-06-22T00:46:25.5809066Z             },
2026-06-22T00:46:25.5809169Z             {
2026-06-22T00:46:25.5809316Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T00:46:25.5809421Z               "line": 931
2026-06-22T00:46:25.5809524Z             },
2026-06-22T00:46:25.5809629Z             {
2026-06-22T00:46:25.5809772Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T00:46:25.5809876Z               "line": 945
2026-06-22T00:46:25.5809981Z             },
2026-06-22T00:46:25.5810087Z             {
2026-06-22T00:46:25.5810239Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.5810350Z               "line": 1290
2026-06-22T00:46:25.5810459Z             },
2026-06-22T00:46:25.5810563Z             {
2026-06-22T00:46:25.5810703Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T00:46:25.5810812Z               "line": 609
2026-06-22T00:46:25.5810916Z             },
2026-06-22T00:46:25.5811017Z             {
2026-06-22T00:46:25.5811141Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5811255Z               "line": 8031
2026-06-22T00:46:25.5811351Z             }
2026-06-22T00:46:25.5811455Z           ]
2026-06-22T00:46:25.5811555Z         }
2026-06-22T00:46:25.5811661Z       }
2026-06-22T00:46:25.5811764Z     },
2026-06-22T00:46:25.5811870Z     {
2026-06-22T00:46:25.5811986Z       "id": "REQ-INST-4",
2026-06-22T00:46:25.5812183Z       "title": "active to dormant/suspended fires a transition echo commune",
2026-06-22T00:46:25.5812410Z       "requiredStages": [
2026-06-22T00:46:25.5812519Z         "impl",
2026-06-22T00:46:25.5812716Z         "unit"
2026-06-22T00:46:25.5812820Z       ],
2026-06-22T00:46:25.5812926Z       "stages": {
2026-06-22T00:46:25.5813026Z         "doc": {
2026-06-22T00:46:25.5813130Z           "complete": false,
2026-06-22T00:46:25.5813246Z           "evidence": []
2026-06-22T00:46:25.5813346Z         },
2026-06-22T00:46:25.5813449Z         "impl": {
2026-06-22T00:46:25.5813555Z           "complete": true,
2026-06-22T00:46:25.5813659Z           "evidence": [
2026-06-22T00:46:25.5813764Z             {
2026-06-22T00:46:25.5813908Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T00:46:25.5814017Z               "line": 385
2026-06-22T00:46:25.5814112Z             },
2026-06-22T00:46:25.5814223Z             {
2026-06-22T00:46:25.5814370Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T00:46:25.5814471Z               "line": 202
2026-06-22T00:46:25.5814580Z             },
2026-06-22T00:46:25.5814679Z             {
2026-06-22T00:46:25.5814817Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T00:46:25.5814925Z               "line": 234
2026-06-22T00:46:25.5815034Z             },
2026-06-22T00:46:25.5815139Z             {
2026-06-22T00:46:25.5815277Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T00:46:25.5815391Z               "line": 274
2026-06-22T00:46:25.5815492Z             }
2026-06-22T00:46:25.5815592Z           ]
2026-06-22T00:46:25.5815692Z         },
2026-06-22T00:46:25.5815798Z         "int": {
2026-06-22T00:46:25.5815907Z           "complete": false,
2026-06-22T00:46:25.5816016Z           "evidence": []
2026-06-22T00:46:25.5816127Z         },
2026-06-22T00:46:25.5816231Z         "unit": {
2026-06-22T00:46:25.5816340Z           "complete": true,
2026-06-22T00:46:25.5816447Z           "evidence": [
2026-06-22T00:46:25.5816555Z             {
2026-06-22T00:46:25.5816708Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T00:46:25.5816813Z               "line": 889
2026-06-22T00:46:25.5816922Z             },
2026-06-22T00:46:25.5817023Z             {
2026-06-22T00:46:25.5817170Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T00:46:25.5817280Z               "line": 561
2026-06-22T00:46:25.5817391Z             },
2026-06-22T00:46:25.5817494Z             {
2026-06-22T00:46:25.5817631Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T00:46:25.5817742Z               "line": 668
2026-06-22T00:46:25.5817846Z             },
2026-06-22T00:46:25.5817951Z             {
2026-06-22T00:46:25.5818081Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T00:46:25.5818189Z               "line": 750
2026-06-22T00:46:25.5818295Z             }
2026-06-22T00:46:25.5818395Z           ]
2026-06-22T00:46:25.5818500Z         }
2026-06-22T00:46:25.5818605Z       }
2026-06-22T00:46:25.5818710Z     },
2026-06-22T00:46:25.5821629Z     {
2026-06-22T00:46:25.5821786Z       "id": "REQ-INST-5",
2026-06-22T00:46:25.5822005Z       "title": "Two-tier context sync (live to all, project to same-project)",
2026-06-22T00:46:25.5822130Z       "requiredStages": [
2026-06-22T00:46:25.5822240Z         "impl",
2026-06-22T00:46:25.5822344Z         "unit",
2026-06-22T00:46:25.5822450Z         "int"
2026-06-22T00:46:25.5822551Z       ],
2026-06-22T00:46:25.5822658Z       "stages": {
2026-06-22T00:46:25.5822767Z         "doc": {
2026-06-22T00:46:25.5822872Z           "complete": false,
2026-06-22T00:46:25.5822984Z           "evidence": []
2026-06-22T00:46:25.5823075Z         },
2026-06-22T00:46:25.5823181Z         "impl": {
2026-06-22T00:46:25.5823295Z           "complete": true,
2026-06-22T00:46:25.5823408Z           "evidence": [
2026-06-22T00:46:25.5823510Z             {
2026-06-22T00:46:25.5823666Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-22T00:46:25.5823772Z               "line": 85
2026-06-22T00:46:25.5823876Z             },
2026-06-22T00:46:25.5824115Z             {
2026-06-22T00:46:25.5824249Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T00:46:25.5824445Z               "line": 68
2026-06-22T00:46:25.5824548Z             },
2026-06-22T00:46:25.5824649Z             {
2026-06-22T00:46:25.5824779Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T00:46:25.5824886Z               "line": 99
2026-06-22T00:46:25.5824992Z             },
2026-06-22T00:46:25.5825089Z             {
2026-06-22T00:46:25.5825229Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T00:46:25.5825334Z               "line": 183
2026-06-22T00:46:25.5825439Z             },
2026-06-22T00:46:25.5825537Z             {
2026-06-22T00:46:25.5825666Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T00:46:25.5825781Z               "line": 314
2026-06-22T00:46:25.5825875Z             }
2026-06-22T00:46:25.5825980Z           ]
2026-06-22T00:46:25.5826086Z         },
2026-06-22T00:46:25.5826185Z         "int": {
2026-06-22T00:46:25.5826315Z           "complete": true,
2026-06-22T00:46:25.5826419Z           "evidence": [
2026-06-22T00:46:25.5826528Z             {
2026-06-22T00:46:25.5826678Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T00:46:25.5826786Z               "line": 156
2026-06-22T00:46:25.5826891Z             },
2026-06-22T00:46:25.5826993Z             {
2026-06-22T00:46:25.5827144Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-22T00:46:25.5827249Z               "line": 145
2026-06-22T00:46:25.5827359Z             },
2026-06-22T00:46:25.5827506Z             {
2026-06-22T00:46:25.5827679Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T00:46:25.5827792Z               "line": 707
2026-06-22T00:46:25.5827889Z             },
2026-06-22T00:46:25.5827994Z             {
2026-06-22T00:46:25.5828144Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T00:46:25.5828259Z               "line": 1069
2026-06-22T00:46:25.5828369Z             }
2026-06-22T00:46:25.5828468Z           ]
2026-06-22T00:46:25.5828564Z         },
2026-06-22T00:46:25.5828679Z         "unit": {
2026-06-22T00:46:25.5828797Z           "complete": true,
2026-06-22T00:46:25.5828904Z           "evidence": [
2026-06-22T00:46:25.5829078Z             {
2026-06-22T00:46:25.5829218Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T00:46:25.5829322Z               "line": 552
2026-06-22T00:46:25.5829422Z             },
2026-06-22T00:46:25.5829513Z             {
2026-06-22T00:46:25.5829661Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T00:46:25.5829761Z               "line": 595
2026-06-22T00:46:25.5829867Z             },
2026-06-22T00:46:25.5829970Z             {
2026-06-22T00:46:25.5830114Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-22T00:46:25.5830224Z               "line": 219
2026-06-22T00:46:25.5830328Z             }
2026-06-22T00:46:25.5830432Z           ]
2026-06-22T00:46:25.5830532Z         }
2026-06-22T00:46:25.5830644Z       }
2026-06-22T00:46:25.5830744Z     },
2026-06-22T00:46:25.5830849Z     {
2026-06-22T00:46:25.5830969Z       "id": "REQ-INST-6",
2026-06-22T00:46:25.5831169Z       "title": "Deferred messages not delivered to dormant/suspended instances",
2026-06-22T00:46:25.5831283Z       "requiredStages": [
2026-06-22T00:46:25.5831387Z         "impl",
2026-06-22T00:46:25.5831494Z         "unit",
2026-06-22T00:46:25.5831603Z         "int"
2026-06-22T00:46:25.5831702Z       ],
2026-06-22T00:46:25.5831813Z       "stages": {
2026-06-22T00:46:25.5831908Z         "doc": {
2026-06-22T00:46:25.5832022Z           "complete": true,
2026-06-22T00:46:25.5832132Z           "evidence": [
2026-06-22T00:46:25.5832232Z             {
2026-06-22T00:46:25.5832361Z               "path": "docs/DEFERRED.md",
2026-06-22T00:46:25.5832467Z               "line": 13
2026-06-22T00:46:25.5832570Z             }
2026-06-22T00:46:25.5832666Z           ]
2026-06-22T00:46:25.5832762Z         },
2026-06-22T00:46:25.5832866Z         "impl": {
2026-06-22T00:46:25.5833087Z           "complete": true,
2026-06-22T00:46:25.5833200Z           "evidence": [
2026-06-22T00:46:25.5833380Z             {
2026-06-22T00:46:25.5833536Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T00:46:25.5833640Z               "line": 391
2026-06-22T00:46:25.5833746Z             },
2026-06-22T00:46:25.5833845Z             {
2026-06-22T00:46:25.5833993Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-22T00:46:25.5834098Z               "line": 27
2026-06-22T00:46:25.5834202Z             },
2026-06-22T00:46:25.5834298Z             {
2026-06-22T00:46:25.5834441Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-22T00:46:25.5834545Z               "line": 73
2026-06-22T00:46:25.5834652Z             },
2026-06-22T00:46:25.5834756Z             {
2026-06-22T00:46:25.5834899Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-22T00:46:25.5835010Z               "line": 182
2026-06-22T00:46:25.5835113Z             },
2026-06-22T00:46:25.5835214Z             {
2026-06-22T00:46:25.5835353Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T00:46:25.5835466Z               "line": 426
2026-06-22T00:46:25.5835567Z             },
2026-06-22T00:46:25.5835663Z             {
2026-06-22T00:46:25.5835804Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-22T00:46:25.5835914Z               "line": 31
2026-06-22T00:46:25.5836018Z             },
2026-06-22T00:46:25.5836116Z             {
2026-06-22T00:46:25.5836259Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T00:46:25.5836370Z               "line": 202
2026-06-22T00:46:25.5836473Z             },
2026-06-22T00:46:25.5836574Z             {
2026-06-22T00:46:25.5836713Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T00:46:25.5836822Z               "line": 83
2026-06-22T00:46:25.5836928Z             },
2026-06-22T00:46:25.5837028Z             {
2026-06-22T00:46:25.5837155Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5837266Z               "line": 1849
2026-06-22T00:46:25.5837366Z             },
2026-06-22T00:46:25.5837470Z             {
2026-06-22T00:46:25.5837609Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T00:46:25.5837723Z               "line": 179
2026-06-22T00:46:25.5837824Z             },
2026-06-22T00:46:25.5837929Z             {
2026-06-22T00:46:25.5838056Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T00:46:25.5838163Z               "line": 215
2026-06-22T00:46:25.5838267Z             }
2026-06-22T00:46:25.5838367Z           ]
2026-06-22T00:46:25.5838468Z         },
2026-06-22T00:46:25.5838573Z         "int": {
2026-06-22T00:46:25.5838695Z           "complete": true,
2026-06-22T00:46:25.5838804Z           "evidence": [
2026-06-22T00:46:25.5838896Z             {
2026-06-22T00:46:25.5839143Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T00:46:25.5839249Z               "line": 721
2026-06-22T00:46:25.5839353Z             },
2026-06-22T00:46:25.5839454Z             {
2026-06-22T00:46:25.5839601Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T00:46:25.5839715Z               "line": 1114
2026-06-22T00:46:25.5839812Z             },
2026-06-22T00:46:25.5839916Z             {
2026-06-22T00:46:25.5840044Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T00:46:25.5840159Z               "line": 726
2026-06-22T00:46:25.5840259Z             }
2026-06-22T00:46:25.5840359Z           ]
2026-06-22T00:46:25.5840469Z         },
2026-06-22T00:46:25.5840573Z         "unit": {
2026-06-22T00:46:25.5840683Z           "complete": true,
2026-06-22T00:46:25.5840789Z           "evidence": [
2026-06-22T00:46:25.5840888Z             {
2026-06-22T00:46:25.5841030Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T00:46:25.5841134Z               "line": 661
2026-06-22T00:46:25.5841247Z             },
2026-06-22T00:46:25.5841347Z             {
2026-06-22T00:46:25.5841496Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T00:46:25.5841725Z               "line": 899
2026-06-22T00:46:25.5841824Z             },
2026-06-22T00:46:25.5842021Z             {
2026-06-22T00:46:25.5842153Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-22T00:46:25.5842267Z               "line": 66
2026-06-22T00:46:25.5842364Z             },
2026-06-22T00:46:25.5842468Z             {
2026-06-22T00:46:25.5842606Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T00:46:25.5842712Z               "line": 297
2026-06-22T00:46:25.5842816Z             },
2026-06-22T00:46:25.5842916Z             {
2026-06-22T00:46:25.5843041Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T00:46:25.5843145Z               "line": 203
2026-06-22T00:46:25.5843246Z             }
2026-06-22T00:46:25.5843332Z           ]
2026-06-22T00:46:25.5843436Z         }
2026-06-22T00:46:25.5843546Z       }
2026-06-22T00:46:25.5843642Z     },
2026-06-22T00:46:25.5843745Z     {
2026-06-22T00:46:25.5843864Z       "id": "REQ-INST-7",
2026-06-22T00:46:25.5844020Z       "title": "Subnet registry + bare-id resolution policy",
2026-06-22T00:46:25.5844133Z       "requiredStages": [
2026-06-22T00:46:25.5844238Z         "impl",
2026-06-22T00:46:25.5844344Z         "unit",
2026-06-22T00:46:25.5844448Z         "int"
2026-06-22T00:46:25.5844553Z       ],
2026-06-22T00:46:25.5844645Z       "stages": {
2026-06-22T00:46:25.5844748Z         "doc": {
2026-06-22T00:46:25.5844863Z           "complete": false,
2026-06-22T00:46:25.5844968Z           "evidence": []
2026-06-22T00:46:25.5845059Z         },
2026-06-22T00:46:25.5845168Z         "impl": {
2026-06-22T00:46:25.5845279Z           "complete": true,
2026-06-22T00:46:25.5845378Z           "evidence": [
2026-06-22T00:46:25.5845478Z             {
2026-06-22T00:46:25.5845617Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T00:46:25.5845721Z               "line": 436
2026-06-22T00:46:25.5845827Z             },
2026-06-22T00:46:25.5845927Z             {
2026-06-22T00:46:25.5846088Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.5846194Z               "line": 27
2026-06-22T00:46:25.5846303Z             },
2026-06-22T00:46:25.5846407Z             {
2026-06-22T00:46:25.5846559Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.5846671Z               "line": 207
2026-06-22T00:46:25.5846771Z             },
2026-06-22T00:46:25.5846863Z             {
2026-06-22T00:46:25.5847014Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.5847125Z               "line": 344
2026-06-22T00:46:25.5847229Z             },
2026-06-22T00:46:25.5847329Z             {
2026-06-22T00:46:25.5847473Z               "path": "crates/spt-net/src/net/ndjson.rs",
2026-06-22T00:46:25.5847578Z               "line": 59
2026-06-22T00:46:25.5847687Z             },
2026-06-22T00:46:25.5847793Z             {
2026-06-22T00:46:25.5847945Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.5848054Z               "line": 41
2026-06-22T00:46:25.5848160Z             },
2026-06-22T00:46:25.5848265Z             {
2026-06-22T00:46:25.5848408Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T00:46:25.5848517Z               "line": 27
2026-06-22T00:46:25.5848621Z             },
2026-06-22T00:46:25.5848718Z             {
2026-06-22T00:46:25.5848864Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T00:46:25.5849057Z               "line": 119
2026-06-22T00:46:25.5849156Z             },
2026-06-22T00:46:25.5849260Z             {
2026-06-22T00:46:25.5849408Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T00:46:25.5849504Z               "line": 134
2026-06-22T00:46:25.5849608Z             },
2026-06-22T00:46:25.5849718Z             {
2026-06-22T00:46:25.5849874Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T00:46:25.5849975Z               "line": 139
2026-06-22T00:46:25.5850080Z             }
2026-06-22T00:46:25.5850290Z           ]
2026-06-22T00:46:25.5850381Z         },
2026-06-22T00:46:25.5850490Z         "int": {
2026-06-22T00:46:25.5850692Z           "complete": true,
2026-06-22T00:46:25.5850805Z           "evidence": [
2026-06-22T00:46:25.5850909Z             {
2026-06-22T00:46:25.5851048Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-22T00:46:25.5851152Z               "line": 145
2026-06-22T00:46:25.5851253Z             },
2026-06-22T00:46:25.5851359Z             {
2026-06-22T00:46:25.5851518Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T00:46:25.5851629Z               "line": 665
2026-06-22T00:46:25.5851722Z             },
2026-06-22T00:46:25.5851822Z             {
2026-06-22T00:46:25.5851970Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T00:46:25.5852074Z               "line": 964
2026-06-22T00:46:25.5852178Z             }
2026-06-22T00:46:25.5852280Z           ]
2026-06-22T00:46:25.5852375Z         },
2026-06-22T00:46:25.5852484Z         "unit": {
2026-06-22T00:46:25.5852605Z           "complete": true,
2026-06-22T00:46:25.5852713Z           "evidence": [
2026-06-22T00:46:25.5852822Z             {
2026-06-22T00:46:25.5852971Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.5853080Z               "line": 1134
2026-06-22T00:46:25.5853176Z             },
2026-06-22T00:46:25.5853281Z             {
2026-06-22T00:46:25.5853429Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.5853535Z               "line": 1521
2026-06-22T00:46:25.5853633Z             },
2026-06-22T00:46:25.5853724Z             {
2026-06-22T00:46:25.5853878Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-22T00:46:25.5853976Z               "line": 84
2026-06-22T00:46:25.5854082Z             },
2026-06-22T00:46:25.5854188Z             {
2026-06-22T00:46:25.5854325Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.5854424Z               "line": 812
2026-06-22T00:46:25.5854529Z             },
2026-06-22T00:46:25.5854632Z             {
2026-06-22T00:46:25.5854775Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.5854895Z               "line": 823
2026-06-22T00:46:25.5854994Z             },
2026-06-22T00:46:25.5855099Z             {
2026-06-22T00:46:25.5855233Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.5855347Z               "line": 838
2026-06-22T00:46:25.5855443Z             },
2026-06-22T00:46:25.5855543Z             {
2026-06-22T00:46:25.5855694Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T00:46:25.5855805Z               "line": 166
2026-06-22T00:46:25.5855909Z             },
2026-06-22T00:46:25.5856014Z             {
2026-06-22T00:46:25.5856163Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T00:46:25.5856272Z               "line": 181
2026-06-22T00:46:25.5856372Z             },
2026-06-22T00:46:25.5856468Z             {
2026-06-22T00:46:25.5856611Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T00:46:25.5856726Z               "line": 214
2026-06-22T00:46:25.5856835Z             }
2026-06-22T00:46:25.5856938Z           ]
2026-06-22T00:46:25.5857038Z         }
2026-06-22T00:46:25.5857138Z       }
2026-06-22T00:46:25.5857246Z     },
2026-06-22T00:46:25.5857336Z     {
2026-06-22T00:46:25.5857442Z       "id": "REQ-INST-8",
2026-06-22T00:46:25.5857617Z       "title": "Remote-control mode distinct from local operation",
2026-06-22T00:46:25.5857738Z       "requiredStages": [
2026-06-22T00:46:25.5857847Z         "impl",
2026-06-22T00:46:25.5857942Z         "unit",
2026-06-22T00:46:25.5858053Z         "int"
2026-06-22T00:46:25.5858152Z       ],
2026-06-22T00:46:25.5858256Z       "stages": {
2026-06-22T00:46:25.5858358Z         "doc": {
2026-06-22T00:46:25.5858476Z           "complete": false,
2026-06-22T00:46:25.5858591Z           "evidence": []
2026-06-22T00:46:25.5858692Z         },
2026-06-22T00:46:25.5858801Z         "impl": {
2026-06-22T00:46:25.5859063Z           "complete": true,
2026-06-22T00:46:25.5859172Z           "evidence": [
2026-06-22T00:46:25.5859364Z             {
2026-06-22T00:46:25.5859506Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T00:46:25.5859612Z               "line": 202
2026-06-22T00:46:25.5859716Z             },
2026-06-22T00:46:25.5859820Z             {
2026-06-22T00:46:25.5859958Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T00:46:25.5860073Z               "line": 525
2026-06-22T00:46:25.5860177Z             },
2026-06-22T00:46:25.5860283Z             {
2026-06-22T00:46:25.5860425Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T00:46:25.5860525Z               "line": 565
2026-06-22T00:46:25.5860631Z             },
2026-06-22T00:46:25.5860731Z             {
2026-06-22T00:46:25.5860874Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T00:46:25.5860983Z               "line": 62
2026-06-22T00:46:25.5861083Z             }
2026-06-22T00:46:25.5861189Z           ]
2026-06-22T00:46:25.5861289Z         },
2026-06-22T00:46:25.5861389Z         "int": {
2026-06-22T00:46:25.5861514Z           "complete": true,
2026-06-22T00:46:25.5861618Z           "evidence": [
2026-06-22T00:46:25.5861718Z             {
2026-06-22T00:46:25.5861867Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T00:46:25.5861975Z               "line": 415
2026-06-22T00:46:25.5862074Z             },
2026-06-22T00:46:25.5862174Z             {
2026-06-22T00:46:25.5862315Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T00:46:25.5862424Z               "line": 1028
2026-06-22T00:46:25.5862535Z             }
2026-06-22T00:46:25.5862644Z           ]
2026-06-22T00:46:25.5862748Z         },
2026-06-22T00:46:25.5862850Z         "unit": {
2026-06-22T00:46:25.5862968Z           "complete": true,
2026-06-22T00:46:25.5863068Z           "evidence": [
2026-06-22T00:46:25.5863174Z             {
2026-06-22T00:46:25.5863316Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T00:46:25.5863436Z               "line": 369
2026-06-22T00:46:25.5863536Z             },
2026-06-22T00:46:25.5863631Z             {
2026-06-22T00:46:25.5863775Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T00:46:25.5863879Z               "line": 636
2026-06-22T00:46:25.5863989Z             },
2026-06-22T00:46:25.5864090Z             {
2026-06-22T00:46:25.5864236Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T00:46:25.5864346Z               "line": 116
2026-06-22T00:46:25.5864439Z             },
2026-06-22T00:46:25.5864546Z             {
2026-06-22T00:46:25.5864676Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T00:46:25.5864786Z               "line": 160
2026-06-22T00:46:25.5864894Z             }
2026-06-22T00:46:25.5864988Z           ]
2026-06-22T00:46:25.5865085Z         }
2026-06-22T00:46:25.5865182Z       }
2026-06-22T00:46:25.5865291Z     },
2026-06-22T00:46:25.5865388Z     {
2026-06-22T00:46:25.5865497Z       "id": "REQ-INST-9",
2026-06-22T00:46:25.5865717Z       "title": "Multi-subnet membership (same-user N subnets; cross-user seam)",
2026-06-22T00:46:25.5865836Z       "requiredStages": [
2026-06-22T00:46:25.5865944Z         "impl",
2026-06-22T00:46:25.5866051Z         "unit"
2026-06-22T00:46:25.5866155Z       ],
2026-06-22T00:46:25.5866259Z       "stages": {
2026-06-22T00:46:25.5866370Z         "doc": {
2026-06-22T00:46:25.5866489Z           "complete": false,
2026-06-22T00:46:25.5866598Z           "evidence": []
2026-06-22T00:46:25.5866708Z         },
2026-06-22T00:46:25.5866813Z         "impl": {
2026-06-22T00:46:25.5866918Z           "complete": true,
2026-06-22T00:46:25.5867019Z           "evidence": [
2026-06-22T00:46:25.5867127Z             {
2026-06-22T00:46:25.5867281Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.5867390Z               "line": 449
2026-06-22T00:46:25.5867498Z             }
2026-06-22T00:46:25.5867598Z           ]
2026-06-22T00:46:25.5867811Z         },
2026-06-22T00:46:25.5867916Z         "int": {
2026-06-22T00:46:25.5868036Z           "complete": false,
2026-06-22T00:46:25.5868235Z           "evidence": []
2026-06-22T00:46:25.5868336Z         },
2026-06-22T00:46:25.5868440Z         "unit": {
2026-06-22T00:46:25.5868550Z           "complete": true,
2026-06-22T00:46:25.5868660Z           "evidence": [
2026-06-22T00:46:25.5868764Z             {
2026-06-22T00:46:25.5868913Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.5869108Z               "line": 1397
2026-06-22T00:46:25.5869199Z             },
2026-06-22T00:46:25.5869299Z             {
2026-06-22T00:46:25.5869441Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.5869557Z               "line": 1406
2026-06-22T00:46:25.5869656Z             },
2026-06-22T00:46:25.5869766Z             {
2026-06-22T00:46:25.5869905Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.5870013Z               "line": 1422
2026-06-22T00:46:25.5870124Z             },
2026-06-22T00:46:25.5870225Z             {
2026-06-22T00:46:25.5870380Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.5870480Z               "line": 1434
2026-06-22T00:46:25.5870586Z             },
2026-06-22T00:46:25.5870689Z             {
2026-06-22T00:46:25.5870828Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.5870944Z               "line": 1454
2026-06-22T00:46:25.5871047Z             }
2026-06-22T00:46:25.5871148Z           ]
2026-06-22T00:46:25.5871248Z         }
2026-06-22T00:46:25.5871347Z       }
2026-06-22T00:46:25.5871458Z     },
2026-06-22T00:46:25.5871558Z     {
2026-06-22T00:46:25.5871676Z       "id": "REQ-INSTALL-1",
2026-06-22T00:46:25.5871891Z       "title": "Two install paths; signed one-line script; OS-service registration",
2026-06-22T00:46:25.5872006Z       "requiredStages": [
2026-06-22T00:46:25.5872107Z         "doc",
2026-06-22T00:46:25.5872215Z         "impl",
2026-06-22T00:46:25.5872325Z         "int"
2026-06-22T00:46:25.5872422Z       ],
2026-06-22T00:46:25.5872535Z       "stages": {
2026-06-22T00:46:25.5872639Z         "doc": {
2026-06-22T00:46:25.5872749Z           "complete": true,
2026-06-22T00:46:25.5872857Z           "evidence": [
2026-06-22T00:46:25.5872961Z             {
2026-06-22T00:46:25.5873080Z               "path": "CONTEXT.md",
2026-06-22T00:46:25.5873181Z               "line": 754
2026-06-22T00:46:25.5873290Z             }
2026-06-22T00:46:25.5873390Z           ]
2026-06-22T00:46:25.5873496Z         },
2026-06-22T00:46:25.5873595Z         "impl": {
2026-06-22T00:46:25.5873706Z           "complete": true,
2026-06-22T00:46:25.5873810Z           "evidence": [
2026-06-22T00:46:25.5873909Z             {
2026-06-22T00:46:25.5874049Z               "path": "installer/install.ps1",
2026-06-22T00:46:25.5874159Z               "line": 57
2026-06-22T00:46:25.5874263Z             },
2026-06-22T00:46:25.5874359Z             {
2026-06-22T00:46:25.5874492Z               "path": "installer/install.sh",
2026-06-22T00:46:25.5874611Z               "line": 52
2026-06-22T00:46:25.5874712Z             }
2026-06-22T00:46:25.5874816Z           ]
2026-06-22T00:46:25.5874907Z         },
2026-06-22T00:46:25.5875017Z         "int": {
2026-06-22T00:46:25.5875120Z           "complete": true,
2026-06-22T00:46:25.5875226Z           "evidence": [
2026-06-22T00:46:25.5875332Z             {
2026-06-22T00:46:25.5875483Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-22T00:46:25.5875592Z               "line": 21
2026-06-22T00:46:25.5875687Z             }
2026-06-22T00:46:25.5875790Z           ]
2026-06-22T00:46:25.5875895Z         },
2026-06-22T00:46:25.5876005Z         "unit": {
2026-06-22T00:46:25.5876119Z           "complete": false,
2026-06-22T00:46:25.5876229Z           "evidence": []
2026-06-22T00:46:25.5876339Z         }
2026-06-22T00:46:25.5876438Z       }
2026-06-22T00:46:25.5876534Z     },
2026-06-22T00:46:25.5876634Z     {
2026-06-22T00:46:25.5876753Z       "id": "REQ-INSTALL-10",
2026-06-22T00:46:25.5878295Z       "title": "Windows at-logon autostart runs the daemon in the background with no persistent window: the scheduled task launches `spt daemon start` (which spawn_detaches a console-less DETACHED_PROCESS daemon and exits) rather than the foreground `spt daemon run` — Task Scheduler's interactive ONLOGON launch of a long-lived console process otherwise leaves a visible console window for the daemon's whole lifetime (v0.7.4)",
2026-06-22T00:46:25.5878519Z       "requiredStages": [
2026-06-22T00:46:25.5878624Z         "impl",
2026-06-22T00:46:25.5878728Z         "unit"
2026-06-22T00:46:25.5878834Z       ],
2026-06-22T00:46:25.5879019Z       "stages": {
2026-06-22T00:46:25.5879115Z         "doc": {
2026-06-22T00:46:25.5879235Z           "complete": false,
2026-06-22T00:46:25.5879339Z           "evidence": []
2026-06-22T00:46:25.5879445Z         },
2026-06-22T00:46:25.5879544Z         "impl": {
2026-06-22T00:46:25.5879653Z           "complete": true,
2026-06-22T00:46:25.5879779Z           "evidence": [
2026-06-22T00:46:25.5879878Z             {
2026-06-22T00:46:25.5880021Z               "path": "installer/install.ps1",
2026-06-22T00:46:25.5880122Z               "line": 191
2026-06-22T00:46:25.5880226Z             }
2026-06-22T00:46:25.5880326Z           ]
2026-06-22T00:46:25.5880432Z         },
2026-06-22T00:46:25.5880535Z         "int": {
2026-06-22T00:46:25.5880641Z           "complete": false,
2026-06-22T00:46:25.5880756Z           "evidence": []
2026-06-22T00:46:25.5880855Z         },
2026-06-22T00:46:25.5880963Z         "unit": {
2026-06-22T00:46:25.5881064Z           "complete": true,
2026-06-22T00:46:25.5881175Z           "evidence": [
2026-06-22T00:46:25.5881283Z             {
2026-06-22T00:46:25.5881432Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-22T00:46:25.5881541Z               "line": 211
2026-06-22T00:46:25.5881641Z             }
2026-06-22T00:46:25.5881747Z           ]
2026-06-22T00:46:25.5881847Z         }
2026-06-22T00:46:25.5881956Z       }
2026-06-22T00:46:25.5882057Z     },
2026-06-22T00:46:25.5882146Z     {
2026-06-22T00:46:25.5882265Z       "id": "REQ-INSTALL-11",
2026-06-22T00:46:25.5884051Z       "title": "Adapter command templates resolve their program against the adapter's install dir BEFORE PATH: a `.spt`-shipped binary (dropped to adapters/_github/<safe>/ by --release/--github acquisition, or kept in the source_dir under copy-mode where only manifest+strings/ are copied to adapters/<name>) runs without any PATH placement — a bare-name template token (e.g. `claude-spt-digest ...`) is rewritten to <install_dir>/<program>(.exe on Windows) when that file exists, else left bare for the PATH fallback. Makes a `.spt` self-contained (closes the --release bundled-binary gap perri confirmed) (v0.7.4)",
2026-06-22T00:46:25.5884179Z       "requiredStages": [
2026-06-22T00:46:25.5884280Z         "doc",
2026-06-22T00:46:25.5884385Z         "impl",
2026-06-22T00:46:25.5884489Z         "unit"
2026-06-22T00:46:25.5884585Z       ],
2026-06-22T00:46:25.5884694Z       "stages": {
2026-06-22T00:46:25.5884798Z         "doc": {
2026-06-22T00:46:25.5884909Z           "complete": true,
2026-06-22T00:46:25.5885018Z           "evidence": [
2026-06-22T00:46:25.5885109Z             {
2026-06-22T00:46:25.5885229Z               "path": "CONTEXT.md",
2026-06-22T00:46:25.5885323Z               "line": 138
2026-06-22T00:46:25.5885428Z             },
2026-06-22T00:46:25.5885539Z             {
2026-06-22T00:46:25.5885662Z               "path": "docs/MANIFEST.md",
2026-06-22T00:46:25.5885777Z               "line": 82
2026-06-22T00:46:25.5885878Z             }
2026-06-22T00:46:25.5885986Z           ]
2026-06-22T00:46:25.5886085Z         },
2026-06-22T00:46:25.5886195Z         "impl": {
2026-06-22T00:46:25.5886317Z           "complete": true,
2026-06-22T00:46:25.5886426Z           "evidence": [
2026-06-22T00:46:25.5886532Z             {
2026-06-22T00:46:25.5886669Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T00:46:25.5886779Z               "line": 223
2026-06-22T00:46:25.5886984Z             },
2026-06-22T00:46:25.5887089Z             {
2026-06-22T00:46:25.5887322Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T00:46:25.5887428Z               "line": 99
2026-06-22T00:46:25.5887537Z             },
2026-06-22T00:46:25.5887637Z             {
2026-06-22T00:46:25.5887782Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T00:46:25.5887890Z               "line": 117
2026-06-22T00:46:25.5888000Z             },
2026-06-22T00:46:25.5888106Z             {
2026-06-22T00:46:25.5888243Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T00:46:25.5888343Z               "line": 332
2026-06-22T00:46:25.5888450Z             },
2026-06-22T00:46:25.5888557Z             {
2026-06-22T00:46:25.5888695Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T00:46:25.5888804Z               "line": 88
2026-06-22T00:46:25.5888912Z             },
2026-06-22T00:46:25.5889070Z             {
2026-06-22T00:46:25.5889208Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T00:46:25.5889317Z               "line": 104
2026-06-22T00:46:25.5889428Z             },
2026-06-22T00:46:25.5889532Z             {
2026-06-22T00:46:25.5889680Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T00:46:25.5889795Z               "line": 297
2026-06-22T00:46:25.5889894Z             },
2026-06-22T00:46:25.5889995Z             {
2026-06-22T00:46:25.5890142Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T00:46:25.5890252Z               "line": 332
2026-06-22T00:46:25.5890349Z             },
2026-06-22T00:46:25.5890452Z             {
2026-06-22T00:46:25.5890605Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T00:46:25.5890710Z               "line": 523
2026-06-22T00:46:25.5890819Z             },
2026-06-22T00:46:25.5890920Z             {
2026-06-22T00:46:25.5891063Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T00:46:25.5891168Z               "line": 546
2026-06-22T00:46:25.5891278Z             },
2026-06-22T00:46:25.5891382Z             {
2026-06-22T00:46:25.5891528Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T00:46:25.5891643Z               "line": 561
2026-06-22T00:46:25.5891735Z             },
2026-06-22T00:46:25.5891838Z             {
2026-06-22T00:46:25.5891973Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T00:46:25.5892082Z               "line": 492
2026-06-22T00:46:25.5892186Z             }
2026-06-22T00:46:25.5892283Z           ]
2026-06-22T00:46:25.5892388Z         },
2026-06-22T00:46:25.5892491Z         "int": {
2026-06-22T00:46:25.5892602Z           "complete": false,
2026-06-22T00:46:25.5892711Z           "evidence": []
2026-06-22T00:46:25.5892811Z         },
2026-06-22T00:46:25.5892917Z         "unit": {
2026-06-22T00:46:25.5893026Z           "complete": true,
2026-06-22T00:46:25.5893145Z           "evidence": [
2026-06-22T00:46:25.5893241Z             {
2026-06-22T00:46:25.5893393Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T00:46:25.5893503Z               "line": 799
2026-06-22T00:46:25.5893618Z             },
2026-06-22T00:46:25.5893721Z             {
2026-06-22T00:46:25.5893860Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T00:46:25.5893973Z               "line": 811
2026-06-22T00:46:25.5894072Z             },
2026-06-22T00:46:25.5894182Z             {
2026-06-22T00:46:25.5894325Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T00:46:25.5894429Z               "line": 820
2026-06-22T00:46:25.5894530Z             }
2026-06-22T00:46:25.5894625Z           ]
2026-06-22T00:46:25.5894729Z         }
2026-06-22T00:46:25.5894831Z       }
2026-06-22T00:46:25.5894940Z     },
2026-06-22T00:46:25.5895039Z     {
2026-06-22T00:46:25.5895160Z       "id": "REQ-INSTALL-12",
2026-06-22T00:46:25.5897755Z       "title": "Durable active-profile pointer for bind-time profile selection (ADR-0021): adapters/active-profiles.toml at the registry ROOT (sibling to the per-adapter <name>/ dirs, so adapter add/update/remove — which only rewrite a <name>/ subdir — can never clobber it), a flat host_binary → \"adapter[:profile]\" map. Read at bind as the PRIMARY profile selector; unset → the registered_at_ms fallback (REQ-START-5). Written ONLY by `spt adapter use <adapter>[:profile]` (resolves the adapter's host_binaries → sets each binary→adapter[:profile]); `spt adapter use --clear <adapter|binary>` drops. NEVER auto-written by install/update/adapter add (that is precisely what would let an update silently flip the active profile). A stale pointer (uninstalled adapter / deleted profile) self-heals: ignored, fall back, warn once. Pruned on adapter remove. Atomic write (spt_store atomic). (v0.9.0)",
2026-06-22T00:46:25.5898165Z       "requiredStages": [
2026-06-22T00:46:25.5898283Z         "doc",
2026-06-22T00:46:25.5898389Z         "impl",
2026-06-22T00:46:25.5898483Z         "unit",
2026-06-22T00:46:25.5898584Z         "int"
2026-06-22T00:46:25.5898680Z       ],
2026-06-22T00:46:25.5898793Z       "stages": {
2026-06-22T00:46:25.5898894Z         "doc": {
2026-06-22T00:46:25.5899089Z           "complete": true,
2026-06-22T00:46:25.5899207Z           "evidence": [
2026-06-22T00:46:25.5899308Z             {
2026-06-22T00:46:25.5899434Z               "path": "CONTEXT.md",
2026-06-22T00:46:25.5899534Z               "line": 185
2026-06-22T00:46:25.5899639Z             }
2026-06-22T00:46:25.5899740Z           ]
2026-06-22T00:46:25.5899844Z         },
2026-06-22T00:46:25.5899955Z         "impl": {
2026-06-22T00:46:25.5900064Z           "complete": true,
2026-06-22T00:46:25.5900178Z           "evidence": [
2026-06-22T00:46:25.5900279Z             {
2026-06-22T00:46:25.5900421Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T00:46:25.5900536Z               "line": 27
2026-06-22T00:46:25.5900631Z             },
2026-06-22T00:46:25.5900741Z             {
2026-06-22T00:46:25.5900884Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T00:46:25.5900998Z               "line": 223
2026-06-22T00:46:25.5901108Z             },
2026-06-22T00:46:25.5901214Z             {
2026-06-22T00:46:25.5901350Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5901461Z               "line": 5677
2026-06-22T00:46:25.5901567Z             }
2026-06-22T00:46:25.5901670Z           ]
2026-06-22T00:46:25.5901771Z         },
2026-06-22T00:46:25.5901867Z         "int": {
2026-06-22T00:46:25.5901984Z           "complete": true,
2026-06-22T00:46:25.5902093Z           "evidence": [
2026-06-22T00:46:25.5905066Z             {
2026-06-22T00:46:25.5905266Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-22T00:46:25.5905372Z               "line": 19
2026-06-22T00:46:25.5905476Z             }
2026-06-22T00:46:25.5905566Z           ]
2026-06-22T00:46:25.5905667Z         },
2026-06-22T00:46:25.5905772Z         "unit": {
2026-06-22T00:46:25.5905881Z           "complete": true,
2026-06-22T00:46:25.5905991Z           "evidence": [
2026-06-22T00:46:25.5906105Z             {
2026-06-22T00:46:25.5906257Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T00:46:25.5906368Z               "line": 395
2026-06-22T00:46:25.5906472Z             },
2026-06-22T00:46:25.5906582Z             {
2026-06-22T00:46:25.5906726Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T00:46:25.5906840Z               "line": 421
2026-06-22T00:46:25.5906941Z             },
2026-06-22T00:46:25.5907041Z             {
2026-06-22T00:46:25.5907187Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T00:46:25.5907292Z               "line": 440
2026-06-22T00:46:25.5907386Z             },
2026-06-22T00:46:25.5907484Z             {
2026-06-22T00:46:25.5907637Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T00:46:25.5907738Z               "line": 475
2026-06-22T00:46:25.5907847Z             },
2026-06-22T00:46:25.5907953Z             {
2026-06-22T00:46:25.5908086Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5908348Z               "line": 8665
2026-06-22T00:46:25.5908448Z             }
2026-06-22T00:46:25.5908654Z           ]
2026-06-22T00:46:25.5908749Z         }
2026-06-22T00:46:25.5908853Z       }
2026-06-22T00:46:25.5909024Z     },
2026-06-22T00:46:25.5909125Z     {
2026-06-22T00:46:25.5909240Z       "id": "REQ-INSTALL-2",
2026-06-22T00:46:25.5909406Z       "title": "Marketplace-repackaging-friendly install",
2026-06-22T00:46:25.5909522Z       "requiredStages": [
2026-06-22T00:46:25.5909626Z         "doc"
2026-06-22T00:46:25.5909725Z       ],
2026-06-22T00:46:25.5909839Z       "stages": {
2026-06-22T00:46:25.5909944Z         "doc": {
2026-06-22T00:46:25.5910056Z           "complete": true,
2026-06-22T00:46:25.5910161Z           "evidence": [
2026-06-22T00:46:25.5910262Z             {
2026-06-22T00:46:25.5910370Z               "path": "CONTEXT.md",
2026-06-22T00:46:25.5910476Z               "line": 755
2026-06-22T00:46:25.5910581Z             }
2026-06-22T00:46:25.5910685Z           ]
2026-06-22T00:46:25.5910791Z         },
2026-06-22T00:46:25.5910895Z         "impl": {
2026-06-22T00:46:25.5911019Z           "complete": false,
2026-06-22T00:46:25.5911120Z           "evidence": []
2026-06-22T00:46:25.5911224Z         },
2026-06-22T00:46:25.5911319Z         "int": {
2026-06-22T00:46:25.5911430Z           "complete": false,
2026-06-22T00:46:25.5911535Z           "evidence": []
2026-06-22T00:46:25.5911639Z         },
2026-06-22T00:46:25.5911735Z         "unit": {
2026-06-22T00:46:25.5911850Z           "complete": false,
2026-06-22T00:46:25.5911963Z           "evidence": []
2026-06-22T00:46:25.5912060Z         }
2026-06-22T00:46:25.5912165Z       }
2026-06-22T00:46:25.5912269Z     },
2026-06-22T00:46:25.5912365Z     {
2026-06-22T00:46:25.5912480Z       "id": "REQ-INSTALL-3",
2026-06-22T00:46:25.5912653Z       "title": "Idempotent + interactive-optional first run",
2026-06-22T00:46:25.5912774Z       "requiredStages": [
2026-06-22T00:46:25.5912873Z         "impl",
2026-06-22T00:46:25.5912987Z         "int"
2026-06-22T00:46:25.5913089Z       ],
2026-06-22T00:46:25.5913198Z       "stages": {
2026-06-22T00:46:25.5913302Z         "doc": {
2026-06-22T00:46:25.5913413Z           "complete": false,
2026-06-22T00:46:25.5913527Z           "evidence": []
2026-06-22T00:46:25.5913626Z         },
2026-06-22T00:46:25.5913737Z         "impl": {
2026-06-22T00:46:25.5913841Z           "complete": true,
2026-06-22T00:46:25.5913955Z           "evidence": [
2026-06-22T00:46:25.5914061Z             {
2026-06-22T00:46:25.5914189Z               "path": "installer/install.ps1",
2026-06-22T00:46:25.5914300Z               "line": 100
2026-06-22T00:46:25.5914399Z             },
2026-06-22T00:46:25.5914504Z             {
2026-06-22T00:46:25.5914643Z               "path": "installer/install.ps1",
2026-06-22T00:46:25.5914748Z               "line": 111
2026-06-22T00:46:25.5914851Z             },
2026-06-22T00:46:25.5914951Z             {
2026-06-22T00:46:25.5915083Z               "path": "installer/install.sh",
2026-06-22T00:46:25.5915196Z               "line": 79
2026-06-22T00:46:25.5915302Z             }
2026-06-22T00:46:25.5915408Z           ]
2026-06-22T00:46:25.5915511Z         },
2026-06-22T00:46:25.5915617Z         "int": {
2026-06-22T00:46:25.5915726Z           "complete": true,
2026-06-22T00:46:25.5915840Z           "evidence": [
2026-06-22T00:46:25.5915942Z             {
2026-06-22T00:46:25.5916088Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-22T00:46:25.5916198Z               "line": 167
2026-06-22T00:46:25.5916299Z             }
2026-06-22T00:46:25.5916399Z           ]
2026-06-22T00:46:25.5916493Z         },
2026-06-22T00:46:25.5916604Z         "unit": {
2026-06-22T00:46:25.5916708Z           "complete": false,
2026-06-22T00:46:25.5916827Z           "evidence": []
2026-06-22T00:46:25.5916933Z         }
2026-06-22T00:46:25.5917037Z       }
2026-06-22T00:46:25.5917132Z     },
2026-06-22T00:46:25.5917234Z     {
2026-06-22T00:46:25.5917352Z       "id": "REQ-INSTALL-4",
2026-06-22T00:46:25.5918111Z       "title": "Adapter registration lifecycle: spt adapter add (--github, manifest-first, install-is-first-update) + soft-deregister remove + optional manifest uninstall template; node-local registered-adapter set self-update ripples over",
2026-06-22T00:46:25.5918322Z       "requiredStages": [
2026-06-22T00:46:25.5918426Z         "impl",
2026-06-22T00:46:25.5918527Z         "unit"
2026-06-22T00:46:25.5918637Z       ],
2026-06-22T00:46:25.5918740Z       "stages": {
2026-06-22T00:46:25.5918842Z         "doc": {
2026-06-22T00:46:25.5919045Z           "complete": false,
2026-06-22T00:46:25.5919152Z           "evidence": []
2026-06-22T00:46:25.5919256Z         },
2026-06-22T00:46:25.5919360Z         "impl": {
2026-06-22T00:46:25.5919476Z           "complete": true,
2026-06-22T00:46:25.5919585Z           "evidence": [
2026-06-22T00:46:25.5919685Z             {
2026-06-22T00:46:25.5919853Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T00:46:25.5919962Z               "line": 165
2026-06-22T00:46:25.5920068Z             },
2026-06-22T00:46:25.5920168Z             {
2026-06-22T00:46:25.5920314Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T00:46:25.5920428Z               "line": 29
2026-06-22T00:46:25.5920536Z             },
2026-06-22T00:46:25.5920640Z             {
2026-06-22T00:46:25.5920784Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T00:46:25.5920893Z               "line": 288
2026-06-22T00:46:25.5920997Z             },
2026-06-22T00:46:25.5921104Z             {
2026-06-22T00:46:25.5921245Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T00:46:25.5921351Z               "line": 356
2026-06-22T00:46:25.5921456Z             },
2026-06-22T00:46:25.5921555Z             {
2026-06-22T00:46:25.5921695Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T00:46:25.5921803Z               "line": 386
2026-06-22T00:46:25.5921908Z             },
2026-06-22T00:46:25.5921995Z             {
2026-06-22T00:46:25.5922142Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T00:46:25.5922252Z               "line": 434
2026-06-22T00:46:25.5922348Z             },
2026-06-22T00:46:25.5922456Z             {
2026-06-22T00:46:25.5922581Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5922687Z               "line": 5396
2026-06-22T00:46:25.5922790Z             }
2026-06-22T00:46:25.5922886Z           ]
2026-06-22T00:46:25.5922992Z         },
2026-06-22T00:46:25.5923086Z         "int": {
2026-06-22T00:46:25.5923204Z           "complete": false,
2026-06-22T00:46:25.5923305Z           "evidence": []
2026-06-22T00:46:25.5923410Z         },
2026-06-22T00:46:25.5923509Z         "unit": {
2026-06-22T00:46:25.5923624Z           "complete": true,
2026-06-22T00:46:25.5923735Z           "evidence": [
2026-06-22T00:46:25.5923829Z             {
2026-06-22T00:46:25.5923983Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T00:46:25.5924087Z               "line": 375
2026-06-22T00:46:25.5924196Z             },
2026-06-22T00:46:25.5924297Z             {
2026-06-22T00:46:25.5924444Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T00:46:25.5924564Z               "line": 808
2026-06-22T00:46:25.5924664Z             },
2026-06-22T00:46:25.5924773Z             {
2026-06-22T00:46:25.5924913Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T00:46:25.5925016Z               "line": 849
2026-06-22T00:46:25.5925112Z             },
2026-06-22T00:46:25.5925213Z             {
2026-06-22T00:46:25.5925364Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T00:46:25.5925468Z               "line": 869
2026-06-22T00:46:25.5925574Z             },
2026-06-22T00:46:25.5925676Z             {
2026-06-22T00:46:25.5925804Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5925915Z               "line": 8403
2026-06-22T00:46:25.5926019Z             }
2026-06-22T00:46:25.5926114Z           ]
2026-06-22T00:46:25.5926220Z         }
2026-06-22T00:46:25.5926433Z       }
2026-06-22T00:46:25.5926535Z     },
2026-06-22T00:46:25.5926639Z     {
2026-06-22T00:46:25.5926854Z       "id": "REQ-INSTALL-5",
2026-06-22T00:46:25.5927359Z       "title": "Non-interactive install path: the canonical one-liner doubles as every adapter's pack-in on-demand install (no second mechanism); sha256-verified fetch; user-PATH registration",
2026-06-22T00:46:25.5927493Z       "requiredStages": [
2026-06-22T00:46:25.5927636Z         "impl",
2026-06-22T00:46:25.5927741Z         "int"
2026-06-22T00:46:25.5927846Z       ],
2026-06-22T00:46:25.5927945Z       "stages": {
2026-06-22T00:46:25.5928052Z         "doc": {
2026-06-22T00:46:25.5928166Z           "complete": false,
2026-06-22T00:46:25.5928269Z           "evidence": []
2026-06-22T00:46:25.5928373Z         },
2026-06-22T00:46:25.5928478Z         "impl": {
2026-06-22T00:46:25.5928586Z           "complete": true,
2026-06-22T00:46:25.5928695Z           "evidence": [
2026-06-22T00:46:25.5928801Z             {
2026-06-22T00:46:25.5928929Z               "path": "installer/install.ps1",
2026-06-22T00:46:25.5929121Z               "line": 5
2026-06-22T00:46:25.5929229Z             },
2026-06-22T00:46:25.5929335Z             {
2026-06-22T00:46:25.5929464Z               "path": "installer/install.sh",
2026-06-22T00:46:25.5929578Z               "line": 6
2026-06-22T00:46:25.5929683Z             }
2026-06-22T00:46:25.5929774Z           ]
2026-06-22T00:46:25.5929878Z         },
2026-06-22T00:46:25.5929978Z         "int": {
2026-06-22T00:46:25.5930084Z           "complete": true,
2026-06-22T00:46:25.5930178Z           "evidence": [
2026-06-22T00:46:25.5930274Z             {
2026-06-22T00:46:25.5930422Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-22T00:46:25.5930522Z               "line": 22
2026-06-22T00:46:25.5930628Z             }
2026-06-22T00:46:25.5930718Z           ]
2026-06-22T00:46:25.5930821Z         },
2026-06-22T00:46:25.5930926Z         "unit": {
2026-06-22T00:46:25.5931031Z           "complete": false,
2026-06-22T00:46:25.5931153Z           "evidence": []
2026-06-22T00:46:25.5931243Z         }
2026-06-22T00:46:25.5931354Z       }
2026-06-22T00:46:25.5931453Z     },
2026-06-22T00:46:25.5931562Z     {
2026-06-22T00:46:25.5931669Z       "id": "REQ-INSTALL-6",
2026-06-22T00:46:25.5932913Z       "title": "Linux elevation install leg: install.sh symlinks the binary into a sudo-reachable path (/usr/local/bin; graceful print-the-one-liner when unelevated) so sudo spt resolves; first sudo spt detects elevation and prompts ONCE for the default user account — thereafter any elevated daemon launch runs daemon + state under that account, never root (KH 5.7 interplay verified) (M8 decision 8)",
2026-06-22T00:46:25.5933021Z       "requiredStages": [
2026-06-22T00:46:25.5933127Z         "impl",
2026-06-22T00:46:25.5933233Z         "unit"
2026-06-22T00:46:25.5933332Z       ],
2026-06-22T00:46:25.5933441Z       "stages": {
2026-06-22T00:46:25.5933538Z         "doc": {
2026-06-22T00:46:25.5933651Z           "complete": false,
2026-06-22T00:46:25.5933764Z           "evidence": []
2026-06-22T00:46:25.5933865Z         },
2026-06-22T00:46:25.5933980Z         "impl": {
2026-06-22T00:46:25.5934093Z           "complete": true,
2026-06-22T00:46:25.5934199Z           "evidence": [
2026-06-22T00:46:25.5934300Z             {
2026-06-22T00:46:25.5934446Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.5934557Z               "line": 61
2026-06-22T00:46:25.5934661Z             },
2026-06-22T00:46:25.5934766Z             {
2026-06-22T00:46:25.5934909Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.5935023Z               "line": 641
2026-06-22T00:46:25.5935129Z             },
2026-06-22T00:46:25.5935228Z             {
2026-06-22T00:46:25.5935381Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T00:46:25.5935492Z               "line": 191
2026-06-22T00:46:25.5935595Z             },
2026-06-22T00:46:25.5935691Z             {
2026-06-22T00:46:25.5935840Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T00:46:25.5936067Z               "line": 276
2026-06-22T00:46:25.5936250Z             },
2026-06-22T00:46:25.5936359Z             {
2026-06-22T00:46:25.5936489Z               "path": "crates/spt/src/main.rs",
2026-06-22T00:46:25.5936594Z               "line": 43
2026-06-22T00:46:25.5936694Z             },
2026-06-22T00:46:25.5936799Z             {
2026-06-22T00:46:25.5936927Z               "path": "installer/install.sh",
2026-06-22T00:46:25.5937028Z               "line": 104
2026-06-22T00:46:25.5937142Z             }
2026-06-22T00:46:25.5937246Z           ]
2026-06-22T00:46:25.5937352Z         },
2026-06-22T00:46:25.5937447Z         "int": {
2026-06-22T00:46:25.5937561Z           "complete": false,
2026-06-22T00:46:25.5937662Z           "evidence": []
2026-06-22T00:46:25.5937753Z         },
2026-06-22T00:46:25.5937857Z         "unit": {
2026-06-22T00:46:25.5937967Z           "complete": true,
2026-06-22T00:46:25.5938082Z           "evidence": [
2026-06-22T00:46:25.5938186Z             {
2026-06-22T00:46:25.5938335Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T00:46:25.5938453Z               "line": 894
2026-06-22T00:46:25.5938549Z             }
2026-06-22T00:46:25.5938655Z           ]
2026-06-22T00:46:25.5938749Z         }
2026-06-22T00:46:25.5938857Z       }
2026-06-22T00:46:25.5939057Z     },
2026-06-22T00:46:25.5939161Z     {
2026-06-22T00:46:25.5939270Z       "id": "REQ-INSTALL-7",
2026-06-22T00:46:25.5940400Z       "title": "Windows inbound reachability: the elevated install leg registers the inbound-UDP firewall rule (New-NetFirewallRule); the daemon self-detects blocked inbound and renders it as the no-connection state in subnet status + the coming-online banner (covers user-scope installs that skip the elevated leg — never a silent NO_SEED_HOLDER dead-end) (M8 root cause 3)",
2026-06-22T00:46:25.5940519Z       "requiredStages": [
2026-06-22T00:46:25.5940615Z         "impl"
2026-06-22T00:46:25.5940719Z       ],
2026-06-22T00:46:25.5940829Z       "stages": {
2026-06-22T00:46:25.5940926Z         "doc": {
2026-06-22T00:46:25.5941044Z           "complete": false,
2026-06-22T00:46:25.5941154Z           "evidence": []
2026-06-22T00:46:25.5941259Z         },
2026-06-22T00:46:25.5941353Z         "impl": {
2026-06-22T00:46:25.5941462Z           "complete": true,
2026-06-22T00:46:25.5941562Z           "evidence": [
2026-06-22T00:46:25.5941670Z             {
2026-06-22T00:46:25.5941793Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5941899Z               "line": 3920
2026-06-22T00:46:25.5942004Z             },
2026-06-22T00:46:25.5942089Z             {
2026-06-22T00:46:25.5942214Z               "path": "installer/install.ps1",
2026-06-22T00:46:25.5942324Z               "line": 157
2026-06-22T00:46:25.5942423Z             }
2026-06-22T00:46:25.5942529Z           ]
2026-06-22T00:46:25.5942624Z         },
2026-06-22T00:46:25.5942728Z         "int": {
2026-06-22T00:46:25.5942829Z           "complete": false,
2026-06-22T00:46:25.5942943Z           "evidence": []
2026-06-22T00:46:25.5943043Z         },
2026-06-22T00:46:25.5943144Z         "unit": {
2026-06-22T00:46:25.5943267Z           "complete": false,
2026-06-22T00:46:25.5943377Z           "evidence": []
2026-06-22T00:46:25.5943483Z         }
2026-06-22T00:46:25.5943582Z       }
2026-06-22T00:46:25.5943687Z     },
2026-06-22T00:46:25.5943788Z     {
2026-06-22T00:46:25.5943901Z       "id": "REQ-INSTALL-8",
2026-06-22T00:46:25.5944978Z       "title": "OS-service registration (REQ-INSTALL-1's deferred third leg): Linux systemd USER service + loginctl enable-linger (linger rides the elevated install leg; daemon starts at boot pre-login, user universe per KH 5.7, systemctl --user managed); Windows scheduled task at-logon (interactive session, no stored credentials); a node is reachable after reboot without any manual spt invocation (M8 decision 17)",
2026-06-22T00:46:25.5945093Z       "requiredStages": [
2026-06-22T00:46:25.5945198Z         "impl"
2026-06-22T00:46:25.5945432Z       ],
2026-06-22T00:46:25.5945541Z       "stages": {
2026-06-22T00:46:25.5945645Z         "doc": {
2026-06-22T00:46:25.5945846Z           "complete": false,
2026-06-22T00:46:25.5945951Z           "evidence": []
2026-06-22T00:46:25.5946052Z         },
2026-06-22T00:46:25.5946160Z         "impl": {
2026-06-22T00:46:25.5946280Z           "complete": true,
2026-06-22T00:46:25.5946381Z           "evidence": [
2026-06-22T00:46:25.5946489Z             {
2026-06-22T00:46:25.5946622Z               "path": "installer/install.ps1",
2026-06-22T00:46:25.5946736Z               "line": 184
2026-06-22T00:46:25.5946834Z             },
2026-06-22T00:46:25.5946939Z             {
2026-06-22T00:46:25.5947064Z               "path": "installer/install.sh",
2026-06-22T00:46:25.5947163Z               "line": 121
2026-06-22T00:46:25.5947268Z             }
2026-06-22T00:46:25.5947364Z           ]
2026-06-22T00:46:25.5947468Z         },
2026-06-22T00:46:25.5947573Z         "int": {
2026-06-22T00:46:25.5947688Z           "complete": false,
2026-06-22T00:46:25.5947802Z           "evidence": []
2026-06-22T00:46:25.5947898Z         },
2026-06-22T00:46:25.5948008Z         "unit": {
2026-06-22T00:46:25.5948112Z           "complete": false,
2026-06-22T00:46:25.5948227Z           "evidence": []
2026-06-22T00:46:25.5948323Z         }
2026-06-22T00:46:25.5948427Z       }
2026-06-22T00:46:25.5948532Z     },
2026-06-22T00:46:25.5948624Z     {
2026-06-22T00:46:25.5948737Z       "id": "REQ-INSTALL-9",
2026-06-22T00:46:25.5950021Z       "title": "Adapter add from a GitHub release archive: `spt adapter add --release <user/repo> [--tag <tag>] [--asset <name>]` fetches a `.spt` tar asset over HTTPS+GitHub trust, extracts it to the durable adapters/_github home, and registers the root — ships built binaries source-free and versioned (the distribution path for an adapter whose dev repo is a monorepo subdir, where --github root-only clone does not fit)",
2026-06-22T00:46:25.5950150Z       "requiredStages": [
2026-06-22T00:46:25.5950246Z         "doc",
2026-06-22T00:46:25.5950349Z         "impl",
2026-06-22T00:46:25.5950455Z         "unit"
2026-06-22T00:46:25.5950555Z       ],
2026-06-22T00:46:25.5950669Z       "stages": {
2026-06-22T00:46:25.5950775Z         "doc": {
2026-06-22T00:46:25.5950889Z           "complete": true,
2026-06-22T00:46:25.5951003Z           "evidence": [
2026-06-22T00:46:25.5951104Z             {
2026-06-22T00:46:25.5951227Z               "path": "CONTEXT.md",
2026-06-22T00:46:25.5951332Z               "line": 771
2026-06-22T00:46:25.5951438Z             }
2026-06-22T00:46:25.5951542Z           ]
2026-06-22T00:46:25.5951642Z         },
2026-06-22T00:46:25.5951753Z         "impl": {
2026-06-22T00:46:25.5951857Z           "complete": true,
2026-06-22T00:46:25.5951970Z           "evidence": [
2026-06-22T00:46:25.5952070Z             {
2026-06-22T00:46:25.5952202Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5952310Z               "line": 2535
2026-06-22T00:46:25.5952416Z             },
2026-06-22T00:46:25.5952527Z             {
2026-06-22T00:46:25.5952654Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5952765Z               "line": 2559
2026-06-22T00:46:25.5952870Z             }
2026-06-22T00:46:25.5952973Z           ]
2026-06-22T00:46:25.5953070Z         },
2026-06-22T00:46:25.5953179Z         "int": {
2026-06-22T00:46:25.5953297Z           "complete": false,
2026-06-22T00:46:25.5953404Z           "evidence": []
2026-06-22T00:46:25.5953517Z         },
2026-06-22T00:46:25.5953622Z         "unit": {
2026-06-22T00:46:25.5953733Z           "complete": true,
2026-06-22T00:46:25.5953842Z           "evidence": [
2026-06-22T00:46:25.5953951Z             {
2026-06-22T00:46:25.5954076Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5954185Z               "line": 7591
2026-06-22T00:46:25.5954291Z             },
2026-06-22T00:46:25.5954382Z             {
2026-06-22T00:46:25.5954509Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5954615Z               "line": 8433
2026-06-22T00:46:25.5954828Z             }
2026-06-22T00:46:25.5954937Z           ]
2026-06-22T00:46:25.5955039Z         }
2026-06-22T00:46:25.5955238Z       }
2026-06-22T00:46:25.5955339Z     },
2026-06-22T00:46:25.5955448Z     {
2026-06-22T00:46:25.5955557Z       "id": "REQ-KICK-1",
2026-06-22T00:46:25.5958014Z       "title": "Explicit, loud controller displacement: `spt rc kick <target>` / `--take` (Take intent) kicks the incumbent controller and becomes controller; the displaced controller receives a LOUD `Displaced{by}` notice and is FULLY DETACHED (not demoted to a viewer). A default attach to a controlled endpoint is NEVER a silent displace (it is the Control busy-refusal). An old (N-1) rc omits intent → Control, so it can drive a free endpoint but CANNOT `--take` — it can never silently steal, and gets a clean busy-refusal instead. Taking control rides the same access_check(endpoint, origin, Unsolicited) as a normal control attach (if you may drive, you may take — no elevated kick policy). The picker surfaces 'Kick <node> and attach' (Take) only on a controlled (blue ■) endpoint, via the existing attach dispatch (single-bringup-path: intent is a parameter).",
2026-06-22T00:46:25.5958163Z       "requiredStages": [
2026-06-22T00:46:25.5958267Z         "doc",
2026-06-22T00:46:25.5958371Z         "impl",
2026-06-22T00:46:25.5958482Z         "unit",
2026-06-22T00:46:25.5958582Z         "int"
2026-06-22T00:46:25.5958686Z       ],
2026-06-22T00:46:25.5958792Z       "stages": {
2026-06-22T00:46:25.5958897Z         "doc": {
2026-06-22T00:46:25.5959077Z           "complete": true,
2026-06-22T00:46:25.5959179Z           "evidence": [
2026-06-22T00:46:25.5959282Z             {
2026-06-22T00:46:25.5959402Z               "path": "CONTEXT.md",
2026-06-22T00:46:25.5959513Z               "line": 342
2026-06-22T00:46:25.5959611Z             }
2026-06-22T00:46:25.5959712Z           ]
2026-06-22T00:46:25.5959818Z         },
2026-06-22T00:46:25.5959921Z         "impl": {
2026-06-22T00:46:25.5960039Z           "complete": true,
2026-06-22T00:46:25.5960154Z           "evidence": [
2026-06-22T00:46:25.5960261Z             {
2026-06-22T00:46:25.5960409Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T00:46:25.5960525Z               "line": 41
2026-06-22T00:46:25.5960633Z             },
2026-06-22T00:46:25.5960734Z             {
2026-06-22T00:46:25.5960872Z               "path": "crates/spt/src/rc.rs",
2026-06-22T00:46:25.5960981Z               "line": 701
2026-06-22T00:46:25.5961083Z             }
2026-06-22T00:46:25.5961183Z           ]
2026-06-22T00:46:25.5961286Z         },
2026-06-22T00:46:25.5961393Z         "int": {
2026-06-22T00:46:25.5961496Z           "complete": true,
2026-06-22T00:46:25.5961606Z           "evidence": [
2026-06-22T00:46:25.5961703Z             {
2026-06-22T00:46:25.5961849Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T00:46:25.5961954Z               "line": 916
2026-06-22T00:46:25.5962065Z             }
2026-06-22T00:46:25.5962168Z           ]
2026-06-22T00:46:25.5962274Z         },
2026-06-22T00:46:25.5962389Z         "unit": {
2026-06-22T00:46:25.5962502Z           "complete": true,
2026-06-22T00:46:25.5962611Z           "evidence": [
2026-06-22T00:46:25.5962716Z             {
2026-06-22T00:46:25.5962866Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T00:46:25.5962976Z               "line": 205
2026-06-22T00:46:25.5963077Z             }
2026-06-22T00:46:25.5963186Z           ]
2026-06-22T00:46:25.5963281Z         }
2026-06-22T00:46:25.5963382Z       }
2026-06-22T00:46:25.5963481Z     },
2026-06-22T00:46:25.5963591Z     {
2026-06-22T00:46:25.5963711Z       "id": "REQ-MANIFEST-1",
2026-06-22T00:46:25.5963921Z       "title": "Per-adapter manifest with adapter_name and min_spt_core_version",
2026-06-22T00:46:25.5964035Z       "requiredStages": [
2026-06-22T00:46:25.5964139Z         "doc",
2026-06-22T00:46:25.5964250Z         "impl",
2026-06-22T00:46:25.5964359Z         "unit"
2026-06-22T00:46:25.5964459Z       ],
2026-06-22T00:46:25.5964570Z       "stages": {
2026-06-22T00:46:25.5964778Z         "doc": {
2026-06-22T00:46:25.5964889Z           "complete": true,
2026-06-22T00:46:25.5965089Z           "evidence": [
2026-06-22T00:46:25.5965185Z             {
2026-06-22T00:46:25.5965303Z               "path": "docs/MANIFEST.md",
2026-06-22T00:46:25.5965402Z               "line": 19
2026-06-22T00:46:25.5965511Z             }
2026-06-22T00:46:25.5965613Z           ]
2026-06-22T00:46:25.5965717Z         },
2026-06-22T00:46:25.5965826Z         "impl": {
2026-06-22T00:46:25.5965937Z           "complete": true,
2026-06-22T00:46:25.5966041Z           "evidence": [
2026-06-22T00:46:25.5966151Z             {
2026-06-22T00:46:25.5966304Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.5966412Z               "line": 18
2026-06-22T00:46:25.5966528Z             }
2026-06-22T00:46:25.5966627Z           ]
2026-06-22T00:46:25.5966732Z         },
2026-06-22T00:46:25.5966838Z         "int": {
2026-06-22T00:46:25.5966956Z           "complete": false,
2026-06-22T00:46:25.5967081Z           "evidence": []
2026-06-22T00:46:25.5967182Z         },
2026-06-22T00:46:25.5967290Z         "unit": {
2026-06-22T00:46:25.5967396Z           "complete": true,
2026-06-22T00:46:25.5967506Z           "evidence": [
2026-06-22T00:46:25.5967600Z             {
2026-06-22T00:46:25.5967752Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.5967866Z               "line": 1029
2026-06-22T00:46:25.5967969Z             },
2026-06-22T00:46:25.5968079Z             {
2026-06-22T00:46:25.5968223Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.5968331Z               "line": 1325
2026-06-22T00:46:25.5968436Z             },
2026-06-22T00:46:25.5968542Z             {
2026-06-22T00:46:25.5968688Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.5968790Z               "line": 1337
2026-06-22T00:46:25.5968894Z             },
2026-06-22T00:46:25.5969085Z             {
2026-06-22T00:46:25.5969233Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.5969342Z               "line": 1348
2026-06-22T00:46:25.5969457Z             },
2026-06-22T00:46:25.5969562Z             {
2026-06-22T00:46:25.5969701Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.5969809Z               "line": 1365
2026-06-22T00:46:25.5969914Z             },
2026-06-22T00:46:25.5970011Z             {
2026-06-22T00:46:25.5970147Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.5970263Z               "line": 1379
2026-06-22T00:46:25.5970369Z             },
2026-06-22T00:46:25.5970467Z             {
2026-06-22T00:46:25.5970619Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.5970724Z               "line": 1495
2026-06-22T00:46:25.5970826Z             },
2026-06-22T00:46:25.5970931Z             {
2026-06-22T00:46:25.5971080Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.5971184Z               "line": 1510
2026-06-22T00:46:25.5971289Z             },
2026-06-22T00:46:25.5971394Z             {
2026-06-22T00:46:25.5971541Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.5971652Z               "line": 1621
2026-06-22T00:46:25.5971752Z             },
2026-06-22T00:46:25.5971866Z             {
2026-06-22T00:46:25.5972005Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.5972109Z               "line": 1632
2026-06-22T00:46:25.5972214Z             }
2026-06-22T00:46:25.5972315Z           ]
2026-06-22T00:46:25.5972414Z         }
2026-06-22T00:46:25.5972514Z       }
2026-06-22T00:46:25.5972621Z     },
2026-06-22T00:46:25.5972728Z     {
2026-06-22T00:46:25.5972844Z       "id": "REQ-MANIFEST-2",
2026-06-22T00:46:25.5973360Z       "title": "Adapter profiles — sparse leaf-replace overlays (shipped + local), composite <adapter>:<profile> addressing, shadow-refusal, tighten-only consent floors",
2026-06-22T00:46:25.5973478Z       "requiredStages": [
2026-06-22T00:46:25.5973698Z         "doc",
2026-06-22T00:46:25.5973803Z         "impl",
2026-06-22T00:46:25.5973899Z         "unit"
2026-06-22T00:46:25.5974089Z       ],
2026-06-22T00:46:25.5974195Z       "stages": {
2026-06-22T00:46:25.5974304Z         "doc": {
2026-06-22T00:46:25.5974413Z           "complete": true,
2026-06-22T00:46:25.5974515Z           "evidence": [
2026-06-22T00:46:25.5974623Z             {
2026-06-22T00:46:25.5974738Z               "path": "CONTEXT.md",
2026-06-22T00:46:25.5974849Z               "line": 75
2026-06-22T00:46:25.5974948Z             }
2026-06-22T00:46:25.5975057Z           ]
2026-06-22T00:46:25.5975159Z         },
2026-06-22T00:46:25.5975267Z         "impl": {
2026-06-22T00:46:25.5975377Z           "complete": true,
2026-06-22T00:46:25.5975488Z           "evidence": [
2026-06-22T00:46:25.5975586Z             {
2026-06-22T00:46:25.5975731Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.5975840Z               "line": 82
2026-06-22T00:46:25.5975948Z             },
2026-06-22T00:46:25.5976058Z             {
2026-06-22T00:46:25.5976211Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T00:46:25.5976329Z               "line": 15
2026-06-22T00:46:25.5976435Z             },
2026-06-22T00:46:25.5976530Z             {
2026-06-22T00:46:25.5976672Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T00:46:25.5976778Z               "line": 65
2026-06-22T00:46:25.5976883Z             },
2026-06-22T00:46:25.5976977Z             {
2026-06-22T00:46:25.5977116Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T00:46:25.5977226Z               "line": 83
2026-06-22T00:46:25.5977331Z             },
2026-06-22T00:46:25.5977436Z             {
2026-06-22T00:46:25.5977574Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T00:46:25.5977690Z               "line": 183
2026-06-22T00:46:25.5977798Z             },
2026-06-22T00:46:25.5977898Z             {
2026-06-22T00:46:25.5978052Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T00:46:25.5978165Z               "line": 527
2026-06-22T00:46:25.5978264Z             },
2026-06-22T00:46:25.5978364Z             {
2026-06-22T00:46:25.5978515Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T00:46:25.5978624Z               "line": 553
2026-06-22T00:46:25.5978725Z             },
2026-06-22T00:46:25.5978834Z             {
2026-06-22T00:46:25.5979045Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T00:46:25.5979163Z               "line": 671
2026-06-22T00:46:25.5979258Z             },
2026-06-22T00:46:25.5979360Z             {
2026-06-22T00:46:25.5979511Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T00:46:25.5979612Z               "line": 696
2026-06-22T00:46:25.5979717Z             },
2026-06-22T00:46:25.5979816Z             {
2026-06-22T00:46:25.5979965Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T00:46:25.5980069Z               "line": 719
2026-06-22T00:46:25.5980178Z             },
2026-06-22T00:46:25.5980275Z             {
2026-06-22T00:46:25.5980412Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T00:46:25.5980527Z               "line": 734
2026-06-22T00:46:25.5980628Z             },
2026-06-22T00:46:25.5980731Z             {
2026-06-22T00:46:25.5980866Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5980981Z               "line": 5567
2026-06-22T00:46:25.5981088Z             },
2026-06-22T00:46:25.5981184Z             {
2026-06-22T00:46:25.5981312Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5981419Z               "line": 5581
2026-06-22T00:46:25.5981525Z             },
2026-06-22T00:46:25.5981630Z             {
2026-06-22T00:46:25.5981753Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5981859Z               "line": 5615
2026-06-22T00:46:25.5981959Z             }
2026-06-22T00:46:25.5982058Z           ]
2026-06-22T00:46:25.5982155Z         },
2026-06-22T00:46:25.5982397Z         "int": {
2026-06-22T00:46:25.5982517Z           "complete": false,
2026-06-22T00:46:25.5982626Z           "evidence": []
2026-06-22T00:46:25.5982828Z         },
2026-06-22T00:46:25.5982931Z         "unit": {
2026-06-22T00:46:25.5983041Z           "complete": true,
2026-06-22T00:46:25.5983142Z           "evidence": [
2026-06-22T00:46:25.5983251Z             {
2026-06-22T00:46:25.5983399Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T00:46:25.5983500Z               "line": 921
2026-06-22T00:46:25.5983603Z             },
2026-06-22T00:46:25.5983702Z             {
2026-06-22T00:46:25.5983851Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T00:46:25.5983953Z               "line": 211
2026-06-22T00:46:25.5984053Z             },
2026-06-22T00:46:25.5984159Z             {
2026-06-22T00:46:25.5984296Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T00:46:25.5984406Z               "line": 272
2026-06-22T00:46:25.5984521Z             },
2026-06-22T00:46:25.5984625Z             {
2026-06-22T00:46:25.5984765Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T00:46:25.5984883Z               "line": 313
2026-06-22T00:46:25.5984983Z             },
2026-06-22T00:46:25.5985089Z             {
2026-06-22T00:46:25.5985236Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T00:46:25.5985341Z               "line": 325
2026-06-22T00:46:25.5985451Z             },
2026-06-22T00:46:25.5985541Z             {
2026-06-22T00:46:25.5985690Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T00:46:25.5985794Z               "line": 336
2026-06-22T00:46:25.5985898Z             },
2026-06-22T00:46:25.5986009Z             {
2026-06-22T00:46:25.5986141Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T00:46:25.5986252Z               "line": 345
2026-06-22T00:46:25.5986358Z             },
2026-06-22T00:46:25.5986470Z             {
2026-06-22T00:46:25.5986618Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T00:46:25.5986733Z               "line": 361
2026-06-22T00:46:25.5986842Z             },
2026-06-22T00:46:25.5986952Z             {
2026-06-22T00:46:25.5987090Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T00:46:25.5987195Z               "line": 444
2026-06-22T00:46:25.5990138Z             },
2026-06-22T00:46:25.5990286Z             {
2026-06-22T00:46:25.5990448Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T00:46:25.5990558Z               "line": 958
2026-06-22T00:46:25.5990663Z             },
2026-06-22T00:46:25.5990768Z             {
2026-06-22T00:46:25.5990915Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T00:46:25.5991025Z               "line": 982
2026-06-22T00:46:25.5991131Z             },
2026-06-22T00:46:25.5991230Z             {
2026-06-22T00:46:25.5991383Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T00:46:25.5991489Z               "line": 1008
2026-06-22T00:46:25.5991616Z             },
2026-06-22T00:46:25.5991715Z             {
2026-06-22T00:46:25.5991862Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T00:46:25.5991975Z               "line": 1027
2026-06-22T00:46:25.5992080Z             },
2026-06-22T00:46:25.5992181Z             {
2026-06-22T00:46:25.5992323Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T00:46:25.5992434Z               "line": 1058
2026-06-22T00:46:25.5992539Z             },
2026-06-22T00:46:25.5992637Z             {
2026-06-22T00:46:25.5992787Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T00:46:25.5992891Z               "line": 309
2026-06-22T00:46:25.5992986Z             },
2026-06-22T00:46:25.5993077Z             {
2026-06-22T00:46:25.5993216Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T00:46:25.5993329Z               "line": 606
2026-06-22T00:46:25.5993421Z             },
2026-06-22T00:46:25.5993524Z             {
2026-06-22T00:46:25.5993783Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5993892Z               "line": 8610
2026-06-22T00:46:25.5994094Z             },
2026-06-22T00:46:25.5994201Z             {
2026-06-22T00:46:25.5994330Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.5994443Z               "line": 9558
2026-06-22T00:46:25.5994542Z             }
2026-06-22T00:46:25.5994638Z           ]
2026-06-22T00:46:25.5994743Z         }
2026-06-22T00:46:25.5994847Z       }
2026-06-22T00:46:25.5994947Z     },
2026-06-22T00:46:25.5995043Z     {
2026-06-22T00:46:25.5995161Z       "id": "REQ-MANIFEST-3",
2026-06-22T00:46:25.5995834Z       "title": "Adapter strings — [strings] KV tree, dot-path get-string resolving through the profile leaf-replace overlay, set-string editing a local profile's [strings] only; data-only (nothing executes a string)",
2026-06-22T00:46:25.5995940Z       "requiredStages": [
2026-06-22T00:46:25.5996048Z         "doc",
2026-06-22T00:46:25.5996149Z         "impl",
2026-06-22T00:46:25.5996264Z         "unit"
2026-06-22T00:46:25.5996373Z       ],
2026-06-22T00:46:25.5996468Z       "stages": {
2026-06-22T00:46:25.5996584Z         "doc": {
2026-06-22T00:46:25.5996697Z           "complete": true,
2026-06-22T00:46:25.5996797Z           "evidence": [
2026-06-22T00:46:25.5996904Z             {
2026-06-22T00:46:25.5997016Z               "path": "CONTEXT.md",
2026-06-22T00:46:25.5997130Z               "line": 81
2026-06-22T00:46:25.5997226Z             }
2026-06-22T00:46:25.5997327Z           ]
2026-06-22T00:46:25.5997426Z         },
2026-06-22T00:46:25.5997536Z         "impl": {
2026-06-22T00:46:25.5997641Z           "complete": true,
2026-06-22T00:46:25.5997750Z           "evidence": [
2026-06-22T00:46:25.5997856Z             {
2026-06-22T00:46:25.5998003Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.5998107Z               "line": 92
2026-06-22T00:46:25.5998209Z             },
2026-06-22T00:46:25.5998318Z             {
2026-06-22T00:46:25.5998461Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T00:46:25.5998580Z               "line": 101
2026-06-22T00:46:25.5998675Z             },
2026-06-22T00:46:25.5998776Z             {
2026-06-22T00:46:25.5998923Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T00:46:25.5999124Z               "line": 132
2026-06-22T00:46:25.5999224Z             },
2026-06-22T00:46:25.5999323Z             {
2026-06-22T00:46:25.5999480Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T00:46:25.5999588Z               "line": 577
2026-06-22T00:46:25.5999687Z             },
2026-06-22T00:46:25.5999788Z             {
2026-06-22T00:46:25.5999926Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T00:46:25.6000025Z               "line": 633
2026-06-22T00:46:25.6000131Z             },
2026-06-22T00:46:25.6000231Z             {
2026-06-22T00:46:25.6000364Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6000470Z               "line": 5628
2026-06-22T00:46:25.6000574Z             },
2026-06-22T00:46:25.6000674Z             {
2026-06-22T00:46:25.6000799Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6000922Z               "line": 5654
2026-06-22T00:46:25.6001018Z             }
2026-06-22T00:46:25.6001118Z           ]
2026-06-22T00:46:25.6001223Z         },
2026-06-22T00:46:25.6001328Z         "int": {
2026-06-22T00:46:25.6001438Z           "complete": false,
2026-06-22T00:46:25.6001552Z           "evidence": []
2026-06-22T00:46:25.6001648Z         },
2026-06-22T00:46:25.6001753Z         "unit": {
2026-06-22T00:46:25.6001857Z           "complete": true,
2026-06-22T00:46:25.6001963Z           "evidence": [
2026-06-22T00:46:25.6002068Z             {
2026-06-22T00:46:25.6002204Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T00:46:25.6002313Z               "line": 371
2026-06-22T00:46:25.6002422Z             },
2026-06-22T00:46:25.6002521Z             {
2026-06-22T00:46:25.6002665Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T00:46:25.6002888Z               "line": 429
2026-06-22T00:46:25.6002994Z             },
2026-06-22T00:46:25.6003184Z             {
2026-06-22T00:46:25.6003318Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T00:46:25.6003433Z               "line": 1082
2026-06-22T00:46:25.6003531Z             },
2026-06-22T00:46:25.6003628Z             {
2026-06-22T00:46:25.6003751Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6003856Z               "line": 8703
2026-06-22T00:46:25.6003957Z             }
2026-06-22T00:46:25.6004066Z           ]
2026-06-22T00:46:25.6004166Z         }
2026-06-22T00:46:25.6004254Z       }
2026-06-22T00:46:25.6004357Z     },
2026-06-22T00:46:25.6004453Z     {
2026-06-22T00:46:25.6004568Z       "id": "REQ-MANIFEST-4",
2026-06-22T00:46:25.6005270Z       "title": "Keyword hints — [[hints]] {keywords (literal/regex), text}; spt api hint --session emits at most one matched hint per message, once per session (seen-set), declaration-order first match; profiles overlay [[hints]] by leaf-replace",
2026-06-22T00:46:25.6005398Z       "requiredStages": [
2026-06-22T00:46:25.6005507Z         "doc",
2026-06-22T00:46:25.6005604Z         "impl",
2026-06-22T00:46:25.6005713Z         "unit"
2026-06-22T00:46:25.6005812Z       ],
2026-06-22T00:46:25.6005923Z       "stages": {
2026-06-22T00:46:25.6006027Z         "doc": {
2026-06-22T00:46:25.6006142Z           "complete": true,
2026-06-22T00:46:25.6006252Z           "evidence": [
2026-06-22T00:46:25.6006347Z             {
2026-06-22T00:46:25.6006456Z               "path": "CONTEXT.md",
2026-06-22T00:46:25.6006562Z               "line": 88
2026-06-22T00:46:25.6006667Z             }
2026-06-22T00:46:25.6006766Z           ]
2026-06-22T00:46:25.6006872Z         },
2026-06-22T00:46:25.6006981Z         "impl": {
2026-06-22T00:46:25.6007086Z           "complete": true,
2026-06-22T00:46:25.6007192Z           "evidence": [
2026-06-22T00:46:25.6007290Z             {
2026-06-22T00:46:25.6007431Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.6007549Z               "line": 100
2026-06-22T00:46:25.6007647Z             },
2026-06-22T00:46:25.6007757Z             {
2026-06-22T00:46:25.6007901Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.6008010Z               "line": 183
2026-06-22T00:46:25.6008110Z             },
2026-06-22T00:46:25.6008216Z             {
2026-06-22T00:46:25.6008353Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T00:46:25.6008468Z               "line": 83
2026-06-22T00:46:25.6008573Z             },
2026-06-22T00:46:25.6008672Z             {
2026-06-22T00:46:25.6008816Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.6008920Z               "line": 629
2026-06-22T00:46:25.6009108Z             },
2026-06-22T00:46:25.6009202Z             {
2026-06-22T00:46:25.6009341Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.6009450Z               "line": 654
2026-06-22T00:46:25.6009555Z             }
2026-06-22T00:46:25.6009655Z           ]
2026-06-22T00:46:25.6009747Z         },
2026-06-22T00:46:25.6009859Z         "int": {
2026-06-22T00:46:25.6009978Z           "complete": false,
2026-06-22T00:46:25.6010083Z           "evidence": []
2026-06-22T00:46:25.6010190Z         },
2026-06-22T00:46:25.6010290Z         "unit": {
2026-06-22T00:46:25.6010396Z           "complete": true,
2026-06-22T00:46:25.6010491Z           "evidence": [
2026-06-22T00:46:25.6010595Z             {
2026-06-22T00:46:25.6010749Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.6010858Z               "line": 1445
2026-06-22T00:46:25.6010963Z             },
2026-06-22T00:46:25.6011054Z             {
2026-06-22T00:46:25.6011191Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.6011298Z               "line": 1478
2026-06-22T00:46:25.6011402Z             },
2026-06-22T00:46:25.6011506Z             {
2026-06-22T00:46:25.6011641Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.6011850Z               "line": 988
2026-06-22T00:46:25.6012064Z             }
2026-06-22T00:46:25.6012169Z           ]
2026-06-22T00:46:25.6012271Z         }
2026-06-22T00:46:25.6012378Z       }
2026-06-22T00:46:25.6012465Z     },
2026-06-22T00:46:25.6012566Z     {
2026-06-22T00:46:25.6012684Z       "id": "REQ-MANIFEST-5",
2026-06-22T00:46:25.6015526Z       "title": "File-backed adapter [strings] (M12-W3-T3.1): a [strings] dot-path value MAY be an inline-table FILE POINTER `key = { file = \"rel/path\" }` resolved to the file's contents at get-string time, keeping large bodies (skill-instructions, hint text) out of the manifest. A value-position table with a `file` key IS the pointer form (reserved — cannot double as data). Per-adapter aux storage `adapters/<adapter>/strings/`; pointers resolve relative to it with CONTAINMENT (reject `..`/absolute escaping the dir). UPDATE-SAFETY: a LOCAL profile's file-pointers resolve relative to the user-owned local-profile dir (NOT adapter-shipped strings/, which adapter updates overwrite), or the local profile inlines. Validate-at-register (fail-fast on a bad/escaping/missing pointer) + LAZY read at get-string (live file edits reflect, no re-register) + skip-diagnostics on missing-at-read (no hard-crash, mirrors [digest]). Rides the same leaf-replace profile overlay as the rest of [strings].",
2026-06-22T00:46:25.6015657Z       "requiredStages": [
2026-06-22T00:46:25.6015763Z         "doc",
2026-06-22T00:46:25.6015868Z         "impl",
2026-06-22T00:46:25.6015977Z         "unit"
2026-06-22T00:46:25.6016082Z       ],
2026-06-22T00:46:25.6016183Z       "stages": {
2026-06-22T00:46:25.6016282Z         "doc": {
2026-06-22T00:46:25.6016392Z           "complete": true,
2026-06-22T00:46:25.6016502Z           "evidence": [
2026-06-22T00:46:25.6016606Z             {
2026-06-22T00:46:25.6016717Z               "path": "CONTEXT.md",
2026-06-22T00:46:25.6016826Z               "line": 83
2026-06-22T00:46:25.6016926Z             }
2026-06-22T00:46:25.6017026Z           ]
2026-06-22T00:46:25.6017122Z         },
2026-06-22T00:46:25.6017232Z         "impl": {
2026-06-22T00:46:25.6017351Z           "complete": true,
2026-06-22T00:46:25.6017456Z           "evidence": [
2026-06-22T00:46:25.6017561Z             {
2026-06-22T00:46:25.6017709Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T00:46:25.6017817Z               "line": 120
2026-06-22T00:46:25.6017917Z             }
2026-06-22T00:46:25.6018019Z           ]
2026-06-22T00:46:25.6018114Z         },
2026-06-22T00:46:25.6018217Z         "int": {
2026-06-22T00:46:25.6018327Z           "complete": false,
2026-06-22T00:46:25.6018428Z           "evidence": []
2026-06-22T00:46:25.6018536Z         },
2026-06-22T00:46:25.6018642Z         "unit": {
2026-06-22T00:46:25.6018746Z           "complete": true,
2026-06-22T00:46:25.6018851Z           "evidence": [
2026-06-22T00:46:25.6019038Z             {
2026-06-22T00:46:25.6019180Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T00:46:25.6019295Z               "line": 404
2026-06-22T00:46:25.6019404Z             },
2026-06-22T00:46:25.6019509Z             {
2026-06-22T00:46:25.6019658Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T00:46:25.6019767Z               "line": 1155
2026-06-22T00:46:25.6019872Z             },
2026-06-22T00:46:25.6019978Z             {
2026-06-22T00:46:25.6020120Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T00:46:25.6020230Z               "line": 1184
2026-06-22T00:46:25.6020330Z             },
2026-06-22T00:46:25.6020433Z             {
2026-06-22T00:46:25.6020571Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T00:46:25.6020685Z               "line": 1224
2026-06-22T00:46:25.6020794Z             },
2026-06-22T00:46:25.6020893Z             {
2026-06-22T00:46:25.6021037Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T00:46:25.6021146Z               "line": 1239
2026-06-22T00:46:25.6021356Z             }
2026-06-22T00:46:25.6021461Z           ]
2026-06-22T00:46:25.6021567Z         }
2026-06-22T00:46:25.6021667Z       }
2026-06-22T00:46:25.6021853Z     },
2026-06-22T00:46:25.6021957Z     {
2026-06-22T00:46:25.6022076Z       "id": "REQ-MANIFEST-6",
2026-06-22T00:46:25.6024219Z       "title": "Cross-adapter fallback target addressing (M12-W3-T3.2): a cross-adapter fallback target is addressed as `<adapter>:<profile>` (not just a bare adapter_name), resolved through the one composite-addressing resolver (registry::resolve_option) at every adapter-option read site so a fallback may select a shipped/local profile (e.g. a `ccs` profile). CONTEXT.md §cross-adapter-fallback reconciled (\"ccs is a profile; cross-adapter fallback may target <adapter>:<profile>\"). Contract-only this milestone: the node-wide fallback SETTING + its rate-limit invocation are deferred to the consuming milestone (the runtime path does not exist yet); this REQ guarantees the ADDRESSING resolves.",
2026-06-22T00:46:25.6024332Z       "requiredStages": [
2026-06-22T00:46:25.6024429Z         "doc",
2026-06-22T00:46:25.6024538Z         "unit"
2026-06-22T00:46:25.6024647Z       ],
2026-06-22T00:46:25.6024749Z       "stages": {
2026-06-22T00:46:25.6024857Z         "doc": {
2026-06-22T00:46:25.6024971Z           "complete": true,
2026-06-22T00:46:25.6025083Z           "evidence": [
2026-06-22T00:46:25.6025177Z             {
2026-06-22T00:46:25.6025296Z               "path": "CONTEXT.md",
2026-06-22T00:46:25.6025411Z               "line": 141
2026-06-22T00:46:25.6025515Z             }
2026-06-22T00:46:25.6025611Z           ]
2026-06-22T00:46:25.6025708Z         },
2026-06-22T00:46:25.6025820Z         "impl": {
2026-06-22T00:46:25.6025929Z           "complete": false,
2026-06-22T00:46:25.6026044Z           "evidence": []
2026-06-22T00:46:25.6026147Z         },
2026-06-22T00:46:25.6026250Z         "int": {
2026-06-22T00:46:25.6026356Z           "complete": false,
2026-06-22T00:46:25.6026466Z           "evidence": []
2026-06-22T00:46:25.6026570Z         },
2026-06-22T00:46:25.6026671Z         "unit": {
2026-06-22T00:46:25.6026781Z           "complete": true,
2026-06-22T00:46:25.6026894Z           "evidence": [
2026-06-22T00:46:25.6027000Z             {
2026-06-22T00:46:25.6027148Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T00:46:25.6027253Z               "line": 1261
2026-06-22T00:46:25.6027358Z             }
2026-06-22T00:46:25.6027458Z           ]
2026-06-22T00:46:25.6027591Z         }
2026-06-22T00:46:25.6027729Z       }
2026-06-22T00:46:25.6027820Z     },
2026-06-22T00:46:25.6027921Z     {
2026-06-22T00:46:25.6028025Z       "id": "REQ-MANIFEST-7",
2026-06-22T00:46:25.6031065Z       "title": "Adapter-declared shortcut basename (M12-W2 follow-on): an optional `[adapter] shortcut_basename` manifest field names the basename the `spt endpoint run` picker bakes into the generated `<basename>-<id>` launcher shortcut (REQ-RUN-SHORTCUT). Absent ⇒ the harness-agnostic default `spt` (→ `spt-<id>`); an adapter sets it to brand its shortcuts (claude-spt → `cc` → `cc-<id>`), so the Claude-Code-ness lives in the PUBLISHED adapter manifest, never hardcoded in spt-core. The picker reads it from the RESOLVED manifest of the selected adapter (registry::resolve_option), falling back to `spt` when absent/empty/unresolvable. Additive + N-1-safe (serde-default Option, omitted from serialization when absent; old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). Documented in docs/MANIFEST.md `[adapter]` section + the claude-spt worked example — the adapter-author contract perri builds spt-claude-code against.",
2026-06-22T00:46:25.6031199Z       "requiredStages": [
2026-06-22T00:46:25.6031301Z         "doc",
2026-06-22T00:46:25.6031405Z         "impl",
2026-06-22T00:46:25.6031512Z         "unit"
2026-06-22T00:46:25.6031616Z       ],
2026-06-22T00:46:25.6031725Z       "stages": {
2026-06-22T00:46:25.6031831Z         "doc": {
2026-06-22T00:46:25.6031931Z           "complete": true,
2026-06-22T00:46:25.6032151Z           "evidence": [
2026-06-22T00:46:25.6032255Z             {
2026-06-22T00:46:25.6032379Z               "path": "docs/MANIFEST.md",
2026-06-22T00:46:25.6032579Z               "line": 35
2026-06-22T00:46:25.6032683Z             }
2026-06-22T00:46:25.6032785Z           ]
2026-06-22T00:46:25.6032885Z         },
2026-06-22T00:46:25.6032989Z         "impl": {
2026-06-22T00:46:25.6033100Z           "complete": true,
2026-06-22T00:46:25.6033213Z           "evidence": [
2026-06-22T00:46:25.6033313Z             {
2026-06-22T00:46:25.6033448Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T00:46:25.6033561Z               "line": 54
2026-06-22T00:46:25.6033663Z             }
2026-06-22T00:46:25.6033758Z           ]
2026-06-22T00:46:25.6033856Z         },
2026-06-22T00:46:25.6033960Z         "int": {
2026-06-22T00:46:25.6034071Z           "complete": false,
2026-06-22T00:46:25.6034168Z           "evidence": []
2026-06-22T00:46:25.6034263Z         },
2026-06-22T00:46:25.6034369Z         "unit": {
2026-06-22T00:46:25.6034478Z           "complete": true,
2026-06-22T00:46:25.6034587Z           "evidence": [
2026-06-22T00:46:25.6034703Z             {
2026-06-22T00:46:25.6034845Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.6034955Z               "line": 1638
2026-06-22T00:46:25.6035060Z             }
2026-06-22T00:46:25.6035150Z           ]
2026-06-22T00:46:25.6035256Z         }
2026-06-22T00:46:25.6035347Z       }
2026-06-22T00:46:25.6035446Z     },
2026-06-22T00:46:25.6035546Z     {
2026-06-22T00:46:25.6035671Z       "id": "REQ-MANIFEST-8",
2026-06-22T00:46:25.6037852Z       "title": "[adapter] host_binaries declares the harness executable basenames a kind=\"harness\" adapter hosts agents inside (e.g. host_binaries = [\"claude\"]); bind-time pid→exe-basename match (case-insensitive, .exe-stripped) over the seed's parent_pid selects the candidate adapter set; zero matches → a friendly error naming the binary + the --adapter escape hatch. Additive + N-1-safe: optional Vec<String>, #[serde(default, skip_serializing_if = \"Vec::is_empty\")] (omitted-serialized like shortcut_basename, old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). The match-key for ADR-0021 adapter-agnostic bind-time resolution. (v0.9.0)",
2026-06-22T00:46:25.6037998Z       "requiredStages": [
2026-06-22T00:46:25.6038103Z         "doc",
2026-06-22T00:46:25.6038204Z         "impl",
2026-06-22T00:46:25.6038309Z         "unit",
2026-06-22T00:46:25.6038408Z         "int"
2026-06-22T00:46:25.6038510Z       ],
2026-06-22T00:46:25.6038618Z       "stages": {
2026-06-22T00:46:25.6038723Z         "doc": {
2026-06-22T00:46:25.6038830Z           "complete": true,
2026-06-22T00:46:25.6039014Z           "evidence": [
2026-06-22T00:46:25.6039106Z             {
2026-06-22T00:46:25.6039234Z               "path": "CONTEXT.md",
2026-06-22T00:46:25.6039342Z               "line": 184
2026-06-22T00:46:25.6039447Z             },
2026-06-22T00:46:25.6039548Z             {
2026-06-22T00:46:25.6039680Z               "path": "docs/MANIFEST.md",
2026-06-22T00:46:25.6039786Z               "line": 46
2026-06-22T00:46:25.6039896Z             }
2026-06-22T00:46:25.6039999Z           ]
2026-06-22T00:46:25.6040101Z         },
2026-06-22T00:46:25.6040205Z         "impl": {
2026-06-22T00:46:25.6040319Z           "complete": true,
2026-06-22T00:46:25.6040421Z           "evidence": [
2026-06-22T00:46:25.6040525Z             {
2026-06-22T00:46:25.6040677Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T00:46:25.6040783Z               "line": 222
2026-06-22T00:46:25.6040882Z             },
2026-06-22T00:46:25.6040992Z             {
2026-06-22T00:46:25.6041136Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T00:46:25.6041235Z               "line": 306
2026-06-22T00:46:25.6041340Z             }
2026-06-22T00:46:25.6041441Z           ]
2026-06-22T00:46:25.6041549Z         },
2026-06-22T00:46:25.6041658Z         "int": {
2026-06-22T00:46:25.6041885Z           "complete": true,
2026-06-22T00:46:25.6041980Z           "evidence": [
2026-06-22T00:46:25.6042077Z             {
2026-06-22T00:46:25.6042329Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-22T00:46:25.6042433Z               "line": 18
2026-06-22T00:46:25.6042538Z             }
2026-06-22T00:46:25.6042629Z           ]
2026-06-22T00:46:25.6042730Z         },
2026-06-22T00:46:25.6042839Z         "unit": {
2026-06-22T00:46:25.6042954Z           "complete": true,
2026-06-22T00:46:25.6043059Z           "evidence": [
2026-06-22T00:46:25.6043163Z             {
2026-06-22T00:46:25.6043311Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.6043420Z               "line": 1656
2026-06-22T00:46:25.6043530Z             },
2026-06-22T00:46:25.6043636Z             {
2026-06-22T00:46:25.6043768Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T00:46:25.6043874Z               "line": 316
2026-06-22T00:46:25.6043975Z             },
2026-06-22T00:46:25.6044087Z             {
2026-06-22T00:46:25.6044227Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T00:46:25.6044342Z               "line": 332
2026-06-22T00:46:25.6044445Z             },
2026-06-22T00:46:25.6044550Z             {
2026-06-22T00:46:25.6044687Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T00:46:25.6044795Z               "line": 345
2026-06-22T00:46:25.6044900Z             },
2026-06-22T00:46:25.6045006Z             {
2026-06-22T00:46:25.6045138Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T00:46:25.6045249Z               "line": 422
2026-06-22T00:46:25.6045354Z             },
2026-06-22T00:46:25.6045462Z             {
2026-06-22T00:46:25.6045592Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T00:46:25.6045696Z               "line": 436
2026-06-22T00:46:25.6045801Z             }
2026-06-22T00:46:25.6045907Z           ]
2026-06-22T00:46:25.6046016Z         }
2026-06-22T00:46:25.6046116Z       }
2026-06-22T00:46:25.6046231Z     },
2026-06-22T00:46:25.6046330Z     {
2026-06-22T00:46:25.6046440Z       "id": "REQ-MESH-1",
2026-06-22T00:46:25.6048506Z       "title": "Membership proof (seed-proof): symmetric current-epoch seed-knowledge replaces is_trusted at EVERY inbound gate (registry apply, WAN receive, sync, notif, connection accept). MK = HKDF(seed, domain ‖ subnet_id ‖ seed_epoch); mutual channel-bound challenge-response at connect (transcript binds both handshake-proven node pubkeys, both nonces, subnet_id, seed_epoch, role); verified once per connection, cached on the broker ConnEntry, kept warm via QUIC keep-alive so re-proof is restart/partition/rotation-only. Exact-epoch match (re-seed is the sole N-1 exception). SECURITY INVARIANTS: channel-bound (no cross-connection replay), mutual, accepts a member it never paired (the mesh property).",
2026-06-22T00:46:25.6048635Z       "requiredStages": [
2026-06-22T00:46:25.6048746Z         "impl",
2026-06-22T00:46:25.6048849Z         "unit",
2026-06-22T00:46:25.6049046Z         "int"
2026-06-22T00:46:25.6049145Z       ],
2026-06-22T00:46:25.6049255Z       "stages": {
2026-06-22T00:46:25.6049375Z         "doc": {
2026-06-22T00:46:25.6049488Z           "complete": false,
2026-06-22T00:46:25.6049603Z           "evidence": []
2026-06-22T00:46:25.6049695Z         },
2026-06-22T00:46:25.6049789Z         "impl": {
2026-06-22T00:46:25.6049893Z           "complete": true,
2026-06-22T00:46:25.6050002Z           "evidence": [
2026-06-22T00:46:25.6050103Z             {
2026-06-22T00:46:25.6050250Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T00:46:25.6050356Z               "line": 972
2026-06-22T00:46:25.6050456Z             },
2026-06-22T00:46:25.6050560Z             {
2026-06-22T00:46:25.6050714Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T00:46:25.6050818Z               "line": 38
2026-06-22T00:46:25.6050923Z             },
2026-06-22T00:46:25.6051014Z             {
2026-06-22T00:46:25.6051166Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T00:46:25.6051386Z               "line": 161
2026-06-22T00:46:25.6051485Z             },
2026-06-22T00:46:25.6051701Z             {
2026-06-22T00:46:25.6051847Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T00:46:25.6051954Z               "line": 206
2026-06-22T00:46:25.6052052Z             },
2026-06-22T00:46:25.6052161Z             {
2026-06-22T00:46:25.6052309Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T00:46:25.6052417Z               "line": 57
2026-06-22T00:46:25.6052521Z             },
2026-06-22T00:46:25.6052617Z             {
2026-06-22T00:46:25.6052774Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T00:46:25.6052884Z               "line": 24
2026-06-22T00:46:25.6052989Z             },
2026-06-22T00:46:25.6053098Z             {
2026-06-22T00:46:25.6053252Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T00:46:25.6053356Z               "line": 142
2026-06-22T00:46:25.6053470Z             },
2026-06-22T00:46:25.6053571Z             {
2026-06-22T00:46:25.6053719Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T00:46:25.6053828Z               "line": 162
2026-06-22T00:46:25.6053933Z             }
2026-06-22T00:46:25.6054033Z           ]
2026-06-22T00:46:25.6054128Z         },
2026-06-22T00:46:25.6054230Z         "int": {
2026-06-22T00:46:25.6054348Z           "complete": true,
2026-06-22T00:46:25.6054453Z           "evidence": [
2026-06-22T00:46:25.6054563Z             {
2026-06-22T00:46:25.6054719Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-22T00:46:25.6054826Z               "line": 67
2026-06-22T00:46:25.6054930Z             },
2026-06-22T00:46:25.6055033Z             {
2026-06-22T00:46:25.6055181Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-22T00:46:25.6055293Z               "line": 93
2026-06-22T00:46:25.6055398Z             },
2026-06-22T00:46:25.6055504Z             {
2026-06-22T00:46:25.6055650Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-22T00:46:25.6055756Z               "line": 117
2026-06-22T00:46:25.6055865Z             },
2026-06-22T00:46:25.6055974Z             {
2026-06-22T00:46:25.6056114Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-22T00:46:25.6056224Z               "line": 134
2026-06-22T00:46:25.6056318Z             }
2026-06-22T00:46:25.6056419Z           ]
2026-06-22T00:46:25.6056528Z         },
2026-06-22T00:46:25.6056633Z         "unit": {
2026-06-22T00:46:25.6056734Z           "complete": true,
2026-06-22T00:46:25.6056847Z           "evidence": [
2026-06-22T00:46:25.6056952Z             {
2026-06-22T00:46:25.6057106Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T00:46:25.6057209Z               "line": 427
2026-06-22T00:46:25.6057311Z             },
2026-06-22T00:46:25.6057407Z             {
2026-06-22T00:46:25.6057567Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T00:46:25.6057686Z               "line": 376
2026-06-22T00:46:25.6057781Z             },
2026-06-22T00:46:25.6057884Z             {
2026-06-22T00:46:25.6058037Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T00:46:25.6058151Z               "line": 412
2026-06-22T00:46:25.6058251Z             },
2026-06-22T00:46:25.6058357Z             {
2026-06-22T00:46:25.6058513Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T00:46:25.6058618Z               "line": 427
2026-06-22T00:46:25.6058723Z             },
2026-06-22T00:46:25.6058828Z             {
2026-06-22T00:46:25.6059066Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T00:46:25.6059175Z               "line": 438
2026-06-22T00:46:25.6059281Z             },
2026-06-22T00:46:25.6059391Z             {
2026-06-22T00:46:25.6059538Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T00:46:25.6059649Z               "line": 449
2026-06-22T00:46:25.6059867Z             },
2026-06-22T00:46:25.6059969Z             {
2026-06-22T00:46:25.6060120Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T00:46:25.6060312Z               "line": 460
2026-06-22T00:46:25.6060415Z             },
2026-06-22T00:46:25.6060519Z             {
2026-06-22T00:46:25.6060673Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T00:46:25.6060782Z               "line": 496
2026-06-22T00:46:25.6060882Z             },
2026-06-22T00:46:25.6060987Z             {
2026-06-22T00:46:25.6061139Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T00:46:25.6061250Z               "line": 519
2026-06-22T00:46:25.6061355Z             },
2026-06-22T00:46:25.6061458Z             {
2026-06-22T00:46:25.6061612Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T00:46:25.6061716Z               "line": 546
2026-06-22T00:46:25.6061817Z             }
2026-06-22T00:46:25.6061912Z           ]
2026-06-22T00:46:25.6062022Z         }
2026-06-22T00:46:25.6062127Z       }
2026-06-22T00:46:25.6062232Z     },
2026-06-22T00:46:25.6062341Z     {
2026-06-22T00:46:25.6062451Z       "id": "REQ-MESH-2",
2026-06-22T00:46:25.6064969Z       "title": "Member roster: node-level union-merge grow-set (per member: pubkey, label, machine_id, last-known address, last-seen — NOT the seed), the discovery directory the mesh dials by. Seeded IN FULL at pairing (seed-holder hands joiner the whole current roster, incl. offline members — folds in deferred pairing-time hostname capture + post-join address seeding); each node authors its own entry stamped with its lease_epoch, merged strictly-greater-wins (the node_label lease); exchanged only over seed-proof'd member connections; forgery-inert (a fake entry names a pubkey that still can't seed-proof). Removal needs a TOMBSTONE — a per-pubkey revoked marker that propagates, dominates the entry, gates admission (seed-proof ∧ ¬tombstoned), and prevents reinsert; cleared by a completed re-pair of that pubkey. Persists through silence (offline member keeps its entry).",
2026-06-22T00:46:25.6065099Z       "requiredStages": [
2026-06-22T00:46:25.6065208Z         "impl",
2026-06-22T00:46:25.6065319Z         "unit",
2026-06-22T00:46:25.6065424Z         "int"
2026-06-22T00:46:25.6065532Z       ],
2026-06-22T00:46:25.6065631Z       "stages": {
2026-06-22T00:46:25.6065741Z         "doc": {
2026-06-22T00:46:25.6065854Z           "complete": false,
2026-06-22T00:46:25.6065967Z           "evidence": []
2026-06-22T00:46:25.6066078Z         },
2026-06-22T00:46:25.6066183Z         "impl": {
2026-06-22T00:46:25.6066301Z           "complete": true,
2026-06-22T00:46:25.6066412Z           "evidence": [
2026-06-22T00:46:25.6066521Z             {
2026-06-22T00:46:25.6066665Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T00:46:25.6066769Z               "line": 807
2026-06-22T00:46:25.6066873Z             },
2026-06-22T00:46:25.6066975Z             {
2026-06-22T00:46:25.6067122Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T00:46:25.6067227Z               "line": 118
2026-06-22T00:46:25.6067328Z             },
2026-06-22T00:46:25.6067436Z             {
2026-06-22T00:46:25.6067580Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T00:46:25.6067681Z               "line": 347
2026-06-22T00:46:25.6067784Z             },
2026-06-22T00:46:25.6067895Z             {
2026-06-22T00:46:25.6068038Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T00:46:25.6068146Z               "line": 389
2026-06-22T00:46:25.6068251Z             },
2026-06-22T00:46:25.6068350Z             {
2026-06-22T00:46:25.6068491Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T00:46:25.6068592Z               "line": 403
2026-06-22T00:46:25.6068698Z             },
2026-06-22T00:46:25.6068792Z             {
2026-06-22T00:46:25.6069027Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T00:46:25.6069140Z               "line": 492
2026-06-22T00:46:25.6069351Z             },
2026-06-22T00:46:25.6069454Z             {
2026-06-22T00:46:25.6069594Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T00:46:25.6069793Z               "line": 507
2026-06-22T00:46:25.6069895Z             },
2026-06-22T00:46:25.6069999Z             {
2026-06-22T00:46:25.6070152Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T00:46:25.6070256Z               "line": 534
2026-06-22T00:46:25.6070365Z             },
2026-06-22T00:46:25.6070467Z             {
2026-06-22T00:46:25.6070613Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T00:46:25.6070718Z               "line": 207
2026-06-22T00:46:25.6070825Z             },
2026-06-22T00:46:25.6070928Z             {
2026-06-22T00:46:25.6071069Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T00:46:25.6071180Z               "line": 755
2026-06-22T00:46:25.6071275Z             },
2026-06-22T00:46:25.6071370Z             {
2026-06-22T00:46:25.6071519Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T00:46:25.6071623Z               "line": 816
2026-06-22T00:46:25.6071738Z             },
2026-06-22T00:46:25.6071838Z             {
2026-06-22T00:46:25.6071990Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T00:46:25.6072091Z               "line": 869
2026-06-22T00:46:25.6072201Z             },
2026-06-22T00:46:25.6072305Z             {
2026-06-22T00:46:25.6072445Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T00:46:25.6072553Z               "line": 891
2026-06-22T00:46:25.6072644Z             },
2026-06-22T00:46:25.6072745Z             {
2026-06-22T00:46:25.6072882Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T00:46:25.6072987Z               "line": 122
2026-06-22T00:46:25.6073093Z             },
2026-06-22T00:46:25.6073196Z             {
2026-06-22T00:46:25.6073334Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T00:46:25.6073443Z               "line": 44
2026-06-22T00:46:25.6073551Z             },
2026-06-22T00:46:25.6073641Z             {
2026-06-22T00:46:25.6073795Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T00:46:25.6073904Z               "line": 184
2026-06-22T00:46:25.6074004Z             },
2026-06-22T00:46:25.6074114Z             {
2026-06-22T00:46:25.6074247Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T00:46:25.6074358Z               "line": 211
2026-06-22T00:46:25.6074457Z             },
2026-06-22T00:46:25.6074562Z             {
2026-06-22T00:46:25.6074691Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T00:46:25.6074801Z               "line": 251
2026-06-22T00:46:25.6074900Z             },
2026-06-22T00:46:25.6075002Z             {
2026-06-22T00:46:25.6075134Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T00:46:25.6075239Z               "line": 275
2026-06-22T00:46:25.6075345Z             },
2026-06-22T00:46:25.6075434Z             {
2026-06-22T00:46:25.6075574Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T00:46:25.6075683Z               "line": 289
2026-06-22T00:46:25.6075797Z             },
2026-06-22T00:46:25.6075903Z             {
2026-06-22T00:46:25.6076036Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T00:46:25.6076139Z               "line": 300
2026-06-22T00:46:25.6076254Z             },
2026-06-22T00:46:25.6076357Z             {
2026-06-22T00:46:25.6076499Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T00:46:25.6076600Z               "line": 313
2026-06-22T00:46:25.6076710Z             }
2026-06-22T00:46:25.6076804Z           ]
2026-06-22T00:46:25.6076910Z         },
2026-06-22T00:46:25.6077015Z         "int": {
2026-06-22T00:46:25.6077133Z           "complete": true,
2026-06-22T00:46:25.6077244Z           "evidence": [
2026-06-22T00:46:25.6077344Z             {
2026-06-22T00:46:25.6077500Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-22T00:46:25.6077692Z               "line": 116
2026-06-22T00:46:25.6077801Z             },
2026-06-22T00:46:25.6077902Z             {
2026-06-22T00:46:25.6078121Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-22T00:46:25.6078236Z               "line": 181
2026-06-22T00:46:25.6078330Z             }
2026-06-22T00:46:25.6078436Z           ]
2026-06-22T00:46:25.6078541Z         },
2026-06-22T00:46:25.6078644Z         "unit": {
2026-06-22T00:46:25.6078763Z           "complete": true,
2026-06-22T00:46:25.6078873Z           "evidence": [
2026-06-22T00:46:25.6079066Z             {
2026-06-22T00:46:25.6079210Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T00:46:25.6079309Z               "line": 999
2026-06-22T00:46:25.6079414Z             },
2026-06-22T00:46:25.6079520Z             {
2026-06-22T00:46:25.6079666Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T00:46:25.6079768Z               "line": 1016
2026-06-22T00:46:25.6079877Z             },
2026-06-22T00:46:25.6079986Z             {
2026-06-22T00:46:25.6080130Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T00:46:25.6083005Z               "line": 1024
2026-06-22T00:46:25.6083142Z             },
2026-06-22T00:46:25.6083252Z             {
2026-06-22T00:46:25.6083413Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T00:46:25.6083528Z               "line": 1048
2026-06-22T00:46:25.6083630Z             },
2026-06-22T00:46:25.6083737Z             {
2026-06-22T00:46:25.6083894Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T00:46:25.6083994Z               "line": 1499
2026-06-22T00:46:25.6084102Z             },
2026-06-22T00:46:25.6084206Z             {
2026-06-22T00:46:25.6084346Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T00:46:25.6084454Z               "line": 347
2026-06-22T00:46:25.6084555Z             },
2026-06-22T00:46:25.6084660Z             {
2026-06-22T00:46:25.6084798Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T00:46:25.6084918Z               "line": 370
2026-06-22T00:46:25.6085008Z             },
2026-06-22T00:46:25.6085122Z             {
2026-06-22T00:46:25.6085261Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T00:46:25.6085365Z               "line": 407
2026-06-22T00:46:25.6085475Z             },
2026-06-22T00:46:25.6085576Z             {
2026-06-22T00:46:25.6085718Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T00:46:25.6085824Z               "line": 431
2026-06-22T00:46:25.6085938Z             },
2026-06-22T00:46:25.6086038Z             {
2026-06-22T00:46:25.6086177Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T00:46:25.6086295Z               "line": 483
2026-06-22T00:46:25.6086381Z             },
2026-06-22T00:46:25.6086487Z             {
2026-06-22T00:46:25.6086619Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T00:46:25.6086732Z               "line": 499
2026-06-22T00:46:25.6086833Z             },
2026-06-22T00:46:25.6086941Z             {
2026-06-22T00:46:25.6087073Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T00:46:25.6087184Z               "line": 514
2026-06-22T00:46:25.6087288Z             },
2026-06-22T00:46:25.6087388Z             {
2026-06-22T00:46:25.6087523Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T00:46:25.6087631Z               "line": 531
2026-06-22T00:46:25.6087737Z             }
2026-06-22T00:46:25.6087842Z           ]
2026-06-22T00:46:25.6087942Z         }
2026-06-22T00:46:25.6088042Z       }
2026-06-22T00:46:25.6088147Z     },
2026-06-22T00:46:25.6088247Z     {
2026-06-22T00:46:25.6088356Z       "id": "REQ-MESH-3",
2026-06-22T00:46:25.6090166Z       "title": "Mesh row fan-out: registry rows stay OWN-AUTHORED; the only change is the push target widens from directly-paired peers to ALL roster members (a wider DIRECT fan-out, never a third-party relay). Every row/message still arrives from its author over a handshake → KNOWN-HAZARDS 7.5 (origin = handshake node) and 4.10 (eviction lease: any future update comes from that node itself, alive) PRESERVED VERBATIM. Closes the staggered A→B→C repro: C (roster-seeded with A at pairing) initiates to A, seed-proof admits C unpaired, A learns C, both push directly.",
2026-06-22T00:46:25.6090546Z       "requiredStages": [
2026-06-22T00:46:25.6090652Z         "impl",
2026-06-22T00:46:25.6090757Z         "unit",
2026-06-22T00:46:25.6090865Z         "int"
2026-06-22T00:46:25.6090967Z       ],
2026-06-22T00:46:25.6091076Z       "stages": {
2026-06-22T00:46:25.6091176Z         "doc": {
2026-06-22T00:46:25.6091287Z           "complete": false,
2026-06-22T00:46:25.6091395Z           "evidence": []
2026-06-22T00:46:25.6091495Z         },
2026-06-22T00:46:25.6091602Z         "impl": {
2026-06-22T00:46:25.6091715Z           "complete": true,
2026-06-22T00:46:25.6091824Z           "evidence": [
2026-06-22T00:46:25.6091921Z             {
2026-06-22T00:46:25.6092072Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T00:46:25.6092190Z               "line": 641
2026-06-22T00:46:25.6092291Z             }
2026-06-22T00:46:25.6092405Z           ]
2026-06-22T00:46:25.6092505Z         },
2026-06-22T00:46:25.6092611Z         "int": {
2026-06-22T00:46:25.6092716Z           "complete": true,
2026-06-22T00:46:25.6092815Z           "evidence": [
2026-06-22T00:46:25.6092911Z             {
2026-06-22T00:46:25.6093059Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-22T00:46:25.6093163Z               "line": 373
2026-06-22T00:46:25.6093269Z             },
2026-06-22T00:46:25.6093374Z             {
2026-06-22T00:46:25.6093502Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-22T00:46:25.6093607Z               "line": 436
2026-06-22T00:46:25.6093707Z             }
2026-06-22T00:46:25.6093807Z           ]
2026-06-22T00:46:25.6093913Z         },
2026-06-22T00:46:25.6094016Z         "unit": {
2026-06-22T00:46:25.6094131Z           "complete": true,
2026-06-22T00:46:25.6094223Z           "evidence": [
2026-06-22T00:46:25.6094331Z             {
2026-06-22T00:46:25.6094474Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T00:46:25.6094578Z               "line": 910
2026-06-22T00:46:25.6094686Z             }
2026-06-22T00:46:25.6094791Z           ]
2026-06-22T00:46:25.6094887Z         }
2026-06-22T00:46:25.6094981Z       }
2026-06-22T00:46:25.6095081Z     },
2026-06-22T00:46:25.6095182Z     {
2026-06-22T00:46:25.6095291Z       "id": "REQ-MESH-4",
2026-06-22T00:46:25.6097468Z       "title": "Revoke + timeboxed seed rotation + re-seed grace: `spt subnet revoke <node>...` (list, elevation-gated, revoke-only) writes roster tombstones immediately, then schedules ONE seed rotation (re-mint seed, bump seed_epoch, push new seed CONFIDENTIALLY over member-auth'd TLS connections — never in roster/registry gossip — force-drop revokees) at the close of a coalescing window (default 1h); further revokes in the window join the same rotation (one epoch bump). `--force-rotate-seed` rotates immediately (compromised-node path). RE-SEED GRACE: a node proving the immediately-prior epoch (N-1) AND still on the roster gets a re-seed-only restricted connection (auto-heals a benign offliner); revoked/off-roster denied; ≥2 stale → re-pair.",
2026-06-22T00:46:25.6097600Z       "requiredStages": [
2026-06-22T00:46:25.6097711Z         "impl",
2026-06-22T00:46:25.6097820Z         "unit",
2026-06-22T00:46:25.6097920Z         "int"
2026-06-22T00:46:25.6098021Z       ],
2026-06-22T00:46:25.6098126Z       "stages": {
2026-06-22T00:46:25.6098220Z         "doc": {
2026-06-22T00:46:25.6098331Z           "complete": false,
2026-06-22T00:46:25.6098435Z           "evidence": []
2026-06-22T00:46:25.6098540Z         },
2026-06-22T00:46:25.6098645Z         "impl": {
2026-06-22T00:46:25.6098759Z           "complete": true,
2026-06-22T00:46:25.6098859Z           "evidence": [
2026-06-22T00:46:25.6099046Z             {
2026-06-22T00:46:25.6099207Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T00:46:25.6099417Z               "line": 33
2026-06-22T00:46:25.6099518Z             },
2026-06-22T00:46:25.6099619Z             {
2026-06-22T00:46:25.6099869Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T00:46:25.6099974Z               "line": 68
2026-06-22T00:46:25.6100077Z             },
2026-06-22T00:46:25.6100181Z             {
2026-06-22T00:46:25.6100340Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T00:46:25.6100444Z               "line": 111
2026-06-22T00:46:25.6100539Z             },
2026-06-22T00:46:25.6100631Z             {
2026-06-22T00:46:25.6100777Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T00:46:25.6100883Z               "line": 462
2026-06-22T00:46:25.6100983Z             },
2026-06-22T00:46:25.6101087Z             {
2026-06-22T00:46:25.6101236Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T00:46:25.6101340Z               "line": 711
2026-06-22T00:46:25.6101445Z             },
2026-06-22T00:46:25.6101560Z             {
2026-06-22T00:46:25.6101698Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T00:46:25.6101822Z               "line": 725
2026-06-22T00:46:25.6101913Z             },
2026-06-22T00:46:25.6102012Z             {
2026-06-22T00:46:25.6102142Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T00:46:25.6102247Z               "line": 132
2026-06-22T00:46:25.6102346Z             },
2026-06-22T00:46:25.6102452Z             {
2026-06-22T00:46:25.6102604Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T00:46:25.6102712Z               "line": 26
2026-06-22T00:46:25.6102818Z             },
2026-06-22T00:46:25.6102909Z             {
2026-06-22T00:46:25.6103051Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T00:46:25.6103156Z               "line": 97
2026-06-22T00:46:25.6103262Z             },
2026-06-22T00:46:25.6103370Z             {
2026-06-22T00:46:25.6103505Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T00:46:25.6103614Z               "line": 119
2026-06-22T00:46:25.6103714Z             },
2026-06-22T00:46:25.6103824Z             {
2026-06-22T00:46:25.6103952Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T00:46:25.6104057Z               "line": 82
2026-06-22T00:46:25.6104168Z             },
2026-06-22T00:46:25.6104267Z             {
2026-06-22T00:46:25.6104406Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T00:46:25.6104515Z               "line": 111
2026-06-22T00:46:25.6104615Z             },
2026-06-22T00:46:25.6104711Z             {
2026-06-22T00:46:25.6104849Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T00:46:25.6104962Z               "line": 232
2026-06-22T00:46:25.6105062Z             },
2026-06-22T00:46:25.6105166Z             {
2026-06-22T00:46:25.6105298Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T00:46:25.6105403Z               "line": 245
2026-06-22T00:46:25.6105500Z             },
2026-06-22T00:46:25.6105608Z             {
2026-06-22T00:46:25.6105738Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6105852Z               "line": 4665
2026-06-22T00:46:25.6105956Z             }
2026-06-22T00:46:25.6106058Z           ]
2026-06-22T00:46:25.6106162Z         },
2026-06-22T00:46:25.6106271Z         "int": {
2026-06-22T00:46:25.6106386Z           "complete": true,
2026-06-22T00:46:25.6106495Z           "evidence": [
2026-06-22T00:46:25.6106595Z             {
2026-06-22T00:46:25.6106743Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-22T00:46:25.6106833Z               "line": 98
2026-06-22T00:46:25.6106929Z             },
2026-06-22T00:46:25.6107035Z             {
2026-06-22T00:46:25.6107186Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-22T00:46:25.6107292Z               "line": 140
2026-06-22T00:46:25.6107396Z             }
2026-06-22T00:46:25.6107535Z           ]
2026-06-22T00:46:25.6107636Z         },
2026-06-22T00:46:25.6107744Z         "unit": {
2026-06-22T00:46:25.6107991Z           "complete": true,
2026-06-22T00:46:25.6108156Z           "evidence": [
2026-06-22T00:46:25.6108333Z             {
2026-06-22T00:46:25.6108489Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T00:46:25.6108600Z               "line": 178
2026-06-22T00:46:25.6108700Z             },
2026-06-22T00:46:25.6108804Z             {
2026-06-22T00:46:25.6109024Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T00:46:25.6109138Z               "line": 242
2026-06-22T00:46:25.6109244Z             },
2026-06-22T00:46:25.6109343Z             {
2026-06-22T00:46:25.6109491Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T00:46:25.6109601Z               "line": 1079
2026-06-22T00:46:25.6109701Z             },
2026-06-22T00:46:25.6109796Z             {
2026-06-22T00:46:25.6109940Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T00:46:25.6110049Z               "line": 1109
2026-06-22T00:46:25.6110160Z             },
2026-06-22T00:46:25.6110259Z             {
2026-06-22T00:46:25.6110405Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T00:46:25.6110515Z               "line": 1129
2026-06-22T00:46:25.6110618Z             },
2026-06-22T00:46:25.6110722Z             {
2026-06-22T00:46:25.6110881Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T00:46:25.6110975Z               "line": 602
2026-06-22T00:46:25.6111075Z             },
2026-06-22T00:46:25.6111171Z             {
2026-06-22T00:46:25.6111309Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T00:46:25.6111424Z               "line": 148
2026-06-22T00:46:25.6111524Z             },
2026-06-22T00:46:25.6111633Z             {
2026-06-22T00:46:25.6111763Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T00:46:25.6111872Z               "line": 169
2026-06-22T00:46:25.6111976Z             },
2026-06-22T00:46:25.6112082Z             {
2026-06-22T00:46:25.6112229Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T00:46:25.6112339Z               "line": 181
2026-06-22T00:46:25.6112454Z             },
2026-06-22T00:46:25.6112544Z             {
2026-06-22T00:46:25.6112693Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T00:46:25.6112802Z               "line": 202
2026-06-22T00:46:25.6112906Z             },
2026-06-22T00:46:25.6113012Z             {
2026-06-22T00:46:25.6113155Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T00:46:25.6113253Z               "line": 375
2026-06-22T00:46:25.6113358Z             },
2026-06-22T00:46:25.6113464Z             {
2026-06-22T00:46:25.6113596Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T00:46:25.6113702Z               "line": 407
2026-06-22T00:46:25.6113807Z             },
2026-06-22T00:46:25.6113906Z             {
2026-06-22T00:46:25.6114036Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6114146Z               "line": 10052
2026-06-22T00:46:25.6114259Z             }
2026-06-22T00:46:25.6114360Z           ]
2026-06-22T00:46:25.6114464Z         }
2026-06-22T00:46:25.6114584Z       }
2026-06-22T00:46:25.6114685Z     },
2026-06-22T00:46:25.6114789Z     {
2026-06-22T00:46:25.6114903Z       "id": "REQ-MESH-5",
2026-06-22T00:46:25.6116303Z       "title": "Hard cutover from pairwise trust: delete peers.json + the is_trusted authorization path (no migration — expendable test fleet, re-pairs fresh under the new model, user decision 2026-06-08). Warn-on-change DEMOTED from a gate to an awareness notice anchored on machine_id (not label): 'machine M, last seen as K1, now presents K2' — fires the same event as the REQ-SUBNET-7 re-pair overwrite. The TrustStore/peers.json code and its call sites are removed, not left dead.",
2026-06-22T00:46:25.6116426Z       "requiredStages": [
2026-06-22T00:46:25.6116530Z         "impl",
2026-06-22T00:46:25.6116637Z         "unit"
2026-06-22T00:46:25.6116736Z       ],
2026-06-22T00:46:25.6116845Z       "stages": {
2026-06-22T00:46:25.6117065Z         "doc": {
2026-06-22T00:46:25.6117174Z           "complete": false,
2026-06-22T00:46:25.6117375Z           "evidence": []
2026-06-22T00:46:25.6117475Z         },
2026-06-22T00:46:25.6117586Z         "impl": {
2026-06-22T00:46:25.6117694Z           "complete": true,
2026-06-22T00:46:25.6117809Z           "evidence": [
2026-06-22T00:46:25.6117900Z             {
2026-06-22T00:46:25.6118052Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T00:46:25.6118153Z               "line": 61
2026-06-22T00:46:25.6118258Z             },
2026-06-22T00:46:25.6118361Z             {
2026-06-22T00:46:25.6118504Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T00:46:25.6118612Z               "line": 109
2026-06-22T00:46:25.6118721Z             },
2026-06-22T00:46:25.6118816Z             {
2026-06-22T00:46:25.6119021Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T00:46:25.6119122Z               "line": 104
2026-06-22T00:46:25.6119222Z             },
2026-06-22T00:46:25.6119326Z             {
2026-06-22T00:46:25.6119470Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T00:46:25.6119585Z               "line": 105
2026-06-22T00:46:25.6119684Z             },
2026-06-22T00:46:25.6119790Z             {
2026-06-22T00:46:25.6119941Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.6120046Z               "line": 85
2026-06-22T00:46:25.6120147Z             },
2026-06-22T00:46:25.6120256Z             {
2026-06-22T00:46:25.6120410Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.6120518Z               "line": 250
2026-06-22T00:46:25.6120623Z             },
2026-06-22T00:46:25.6120715Z             {
2026-06-22T00:46:25.6120871Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.6120974Z               "line": 314
2026-06-22T00:46:25.6121080Z             },
2026-06-22T00:46:25.6121188Z             {
2026-06-22T00:46:25.6121340Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.6121450Z               "line": 767
2026-06-22T00:46:25.6121555Z             },
2026-06-22T00:46:25.6121655Z             {
2026-06-22T00:46:25.6121779Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T00:46:25.6121893Z               "line": 101
2026-06-22T00:46:25.6121998Z             },
2026-06-22T00:46:25.6122098Z             {
2026-06-22T00:46:25.6122241Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T00:46:25.6122352Z               "line": 193
2026-06-22T00:46:25.6122456Z             }
2026-06-22T00:46:25.6122556Z           ]
2026-06-22T00:46:25.6122652Z         },
2026-06-22T00:46:25.6122752Z         "int": {
2026-06-22T00:46:25.6122856Z           "complete": false,
2026-06-22T00:46:25.6122957Z           "evidence": []
2026-06-22T00:46:25.6123057Z         },
2026-06-22T00:46:25.6123166Z         "unit": {
2026-06-22T00:46:25.6123277Z           "complete": true,
2026-06-22T00:46:25.6123386Z           "evidence": [
2026-06-22T00:46:25.6123495Z             {
2026-06-22T00:46:25.6123635Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.6123747Z               "line": 1009
2026-06-22T00:46:25.6123851Z             },
2026-06-22T00:46:25.6123957Z             {
2026-06-22T00:46:25.6124086Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T00:46:25.6124200Z               "line": 462
2026-06-22T00:46:25.6124306Z             }
2026-06-22T00:46:25.6124410Z           ]
2026-06-22T00:46:25.6124509Z         }
2026-06-22T00:46:25.6124596Z       }
2026-06-22T00:46:25.6124691Z     },
2026-06-22T00:46:25.6124791Z     {
2026-06-22T00:46:25.6124907Z       "id": "REQ-MESH-6",
2026-06-22T00:46:25.6126125Z       "title": "Concurrent liveness probes: `spt subnet status --nodes` fans out its offline/serve-probes (REQ-SUBNET-5) CONCURRENTLY — total wall-time bounded by the single-probe ceiling (~3s), never k×ceiling. The mesh makes a node see ALL members (many possibly offline), so a serial probe loop would be offline_count×3s. (Planning verifies the current REQ-SUBNET-5 probe loop's behavior and fixes it if serial.)",
2026-06-22T00:46:25.6126456Z       "requiredStages": [
2026-06-22T00:46:25.6126553Z         "impl",
2026-06-22T00:46:25.6126662Z         "unit"
2026-06-22T00:46:25.6126752Z       ],
2026-06-22T00:46:25.6126858Z       "stages": {
2026-06-22T00:46:25.6126953Z         "doc": {
2026-06-22T00:46:25.6127071Z           "complete": false,
2026-06-22T00:46:25.6127182Z           "evidence": []
2026-06-22T00:46:25.6127291Z         },
2026-06-22T00:46:25.6127396Z         "impl": {
2026-06-22T00:46:25.6127507Z           "complete": true,
2026-06-22T00:46:25.6127653Z           "evidence": [
2026-06-22T00:46:25.6127783Z             {
2026-06-22T00:46:25.6127916Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6128025Z               "line": 4181
2026-06-22T00:46:25.6128131Z             }
2026-06-22T00:46:25.6128235Z           ]
2026-06-22T00:46:25.6128350Z         },
2026-06-22T00:46:25.6128456Z         "int": {
2026-06-22T00:46:25.6128563Z           "complete": false,
2026-06-22T00:46:25.6128675Z           "evidence": []
2026-06-22T00:46:25.6128775Z         },
2026-06-22T00:46:25.6128878Z         "unit": {
2026-06-22T00:46:25.6129073Z           "complete": true,
2026-06-22T00:46:25.6129168Z           "evidence": [
2026-06-22T00:46:25.6129271Z             {
2026-06-22T00:46:25.6129395Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6129506Z               "line": 10602
2026-06-22T00:46:25.6129605Z             },
2026-06-22T00:46:25.6129711Z             {
2026-06-22T00:46:25.6129835Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6129939Z               "line": 10629
2026-06-22T00:46:25.6130035Z             },
2026-06-22T00:46:25.6130135Z             {
2026-06-22T00:46:25.6130263Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6130369Z               "line": 10653
2026-06-22T00:46:25.6130483Z             }
2026-06-22T00:46:25.6130588Z           ]
2026-06-22T00:46:25.6130689Z         }
2026-06-22T00:46:25.6130792Z       }
2026-06-22T00:46:25.6130898Z     },
2026-06-22T00:46:25.6131003Z     {
2026-06-22T00:46:25.6131111Z       "id": "REQ-MIGRATE-1",
2026-06-22T00:46:25.6131294Z       "title": "Auto-detect and migrate a legacy claude_skill_owl install",
2026-06-22T00:46:25.6131417Z       "requiredStages": [],
2026-06-22T00:46:25.6131516Z       "stages": {
2026-06-22T00:46:25.6131626Z         "doc": {
2026-06-22T00:46:25.6131734Z           "complete": false,
2026-06-22T00:46:25.6131843Z           "evidence": []
2026-06-22T00:46:25.6131943Z         },
2026-06-22T00:46:25.6132044Z         "impl": {
2026-06-22T00:46:25.6132157Z           "complete": false,
2026-06-22T00:46:25.6132258Z           "evidence": []
2026-06-22T00:46:25.6132368Z         },
2026-06-22T00:46:25.6132467Z         "int": {
2026-06-22T00:46:25.6132583Z           "complete": false,
2026-06-22T00:46:25.6132692Z           "evidence": []
2026-06-22T00:46:25.6132801Z         },
2026-06-22T00:46:25.6132907Z         "unit": {
2026-06-22T00:46:25.6133016Z           "complete": false,
2026-06-22T00:46:25.6133140Z           "evidence": []
2026-06-22T00:46:25.6133246Z         }
2026-06-22T00:46:25.6133350Z       }
2026-06-22T00:46:25.6133450Z     },
2026-06-22T00:46:25.6133556Z     {
2026-06-22T00:46:25.6133664Z       "id": "REQ-MSG-1",
2026-06-22T00:46:25.6134133Z       "title": "Local message delivery: TCP-first to a registered address, spool fallback when offline; id->address via registry (stale-clean first); reply routing (__REPLY_TO__)",
2026-06-22T00:46:25.6134256Z       "requiredStages": [
2026-06-22T00:46:25.6134355Z         "impl",
2026-06-22T00:46:25.6134464Z         "unit",
2026-06-22T00:46:25.6134570Z         "int"
2026-06-22T00:46:25.6134679Z       ],
2026-06-22T00:46:25.6134784Z       "stages": {
2026-06-22T00:46:25.6134890Z         "doc": {
2026-06-22T00:46:25.6134998Z           "complete": false,
2026-06-22T00:46:25.6135108Z           "evidence": []
2026-06-22T00:46:25.6135313Z         },
2026-06-22T00:46:25.6135423Z         "impl": {
2026-06-22T00:46:25.6135609Z           "complete": true,
2026-06-22T00:46:25.6135723Z           "evidence": [
2026-06-22T00:46:25.6135824Z             {
2026-06-22T00:46:25.6135971Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T00:46:25.6136082Z               "line": 28
2026-06-22T00:46:25.6136191Z             },
2026-06-22T00:46:25.6136286Z             {
2026-06-22T00:46:25.6136431Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T00:46:25.6136538Z               "line": 94
2026-06-22T00:46:25.6136638Z             },
2026-06-22T00:46:25.6136752Z             {
2026-06-22T00:46:25.6136884Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T00:46:25.6136997Z               "line": 127
2026-06-22T00:46:25.6137103Z             },
2026-06-22T00:46:25.6137208Z             {
2026-06-22T00:46:25.6137341Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T00:46:25.6137447Z               "line": 149
2026-06-22T00:46:25.6137546Z             },
2026-06-22T00:46:25.6137646Z             {
2026-06-22T00:46:25.6137790Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T00:46:25.6137899Z               "line": 174
2026-06-22T00:46:25.6138005Z             },
2026-06-22T00:46:25.6138114Z             {
2026-06-22T00:46:25.6138251Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-22T00:46:25.6138357Z               "line": 18
2026-06-22T00:46:25.6138452Z             },
2026-06-22T00:46:25.6138556Z             {
2026-06-22T00:46:25.6138682Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T00:46:25.6138790Z               "line": 13
2026-06-22T00:46:25.6138890Z             },
2026-06-22T00:46:25.6139063Z             {
2026-06-22T00:46:25.6139200Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T00:46:25.6139302Z               "line": 62
2026-06-22T00:46:25.6139406Z             },
2026-06-22T00:46:25.6139505Z             {
2026-06-22T00:46:25.6139652Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T00:46:25.6139765Z               "line": 13
2026-06-22T00:46:25.6139874Z             }
2026-06-22T00:46:25.6139980Z           ]
2026-06-22T00:46:25.6140080Z         },
2026-06-22T00:46:25.6140198Z         "int": {
2026-06-22T00:46:25.6140300Z           "complete": true,
2026-06-22T00:46:25.6140404Z           "evidence": [
2026-06-22T00:46:25.6140499Z             {
2026-06-22T00:46:25.6140662Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-22T00:46:25.6140770Z               "line": 9
2026-06-22T00:46:25.6140876Z             },
2026-06-22T00:46:25.6140981Z             {
2026-06-22T00:46:25.6141128Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-22T00:46:25.6141234Z               "line": 56
2026-06-22T00:46:25.6141343Z             },
2026-06-22T00:46:25.6141443Z             {
2026-06-22T00:46:25.6141597Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-22T00:46:25.6141710Z               "line": 113
2026-06-22T00:46:25.6141816Z             }
2026-06-22T00:46:25.6141916Z           ]
2026-06-22T00:46:25.6142015Z         },
2026-06-22T00:46:25.6142128Z         "unit": {
2026-06-22T00:46:25.6142229Z           "complete": true,
2026-06-22T00:46:25.6142341Z           "evidence": [
2026-06-22T00:46:25.6142436Z             {
2026-06-22T00:46:25.6142575Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T00:46:25.6142684Z               "line": 203
2026-06-22T00:46:25.6142794Z             },
2026-06-22T00:46:25.6142899Z             {
2026-06-22T00:46:25.6143027Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T00:46:25.6143133Z               "line": 232
2026-06-22T00:46:25.6143238Z             },
2026-06-22T00:46:25.6143332Z             {
2026-06-22T00:46:25.6143458Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T00:46:25.6143571Z               "line": 277
2026-06-22T00:46:25.6143681Z             },
2026-06-22T00:46:25.6143881Z             {
2026-06-22T00:46:25.6144020Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T00:46:25.6144219Z               "line": 300
2026-06-22T00:46:25.6144320Z             },
2026-06-22T00:46:25.6144421Z             {
2026-06-22T00:46:25.6144553Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T00:46:25.6144668Z               "line": 325
2026-06-22T00:46:25.6144760Z             },
2026-06-22T00:46:25.6144867Z             {
2026-06-22T00:46:25.6145005Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-22T00:46:25.6145116Z               "line": 204
2026-06-22T00:46:25.6145225Z             },
2026-06-22T00:46:25.6145325Z             {
2026-06-22T00:46:25.6145464Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-22T00:46:25.6145573Z               "line": 237
2026-06-22T00:46:25.6145678Z             },
2026-06-22T00:46:25.6145778Z             {
2026-06-22T00:46:25.6145916Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-22T00:46:25.6146032Z               "line": 251
2026-06-22T00:46:25.6146117Z             },
2026-06-22T00:46:25.6146221Z             {
2026-06-22T00:46:25.6146361Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-22T00:46:25.6146479Z               "line": 263
2026-06-22T00:46:25.6146579Z             },
2026-06-22T00:46:25.6146685Z             {
2026-06-22T00:46:25.6146817Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T00:46:25.6146922Z               "line": 162
2026-06-22T00:46:25.6147028Z             },
2026-06-22T00:46:25.6147122Z             {
2026-06-22T00:46:25.6147260Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T00:46:25.6147360Z               "line": 242
2026-06-22T00:46:25.6147468Z             },
2026-06-22T00:46:25.6147572Z             {
2026-06-22T00:46:25.6147702Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T00:46:25.6147811Z               "line": 134
2026-06-22T00:46:25.6147910Z             },
2026-06-22T00:46:25.6148017Z             {
2026-06-22T00:46:25.6148144Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T00:46:25.6148260Z               "line": 153
2026-06-22T00:46:25.6148355Z             }
2026-06-22T00:46:25.6148459Z           ]
2026-06-22T00:46:25.6148565Z         }
2026-06-22T00:46:25.6148669Z       }
2026-06-22T00:46:25.6148769Z     },
2026-06-22T00:46:25.6148865Z     {
2026-06-22T00:46:25.6149046Z       "id": "REQ-MSG-2",
2026-06-22T00:46:25.6149341Z       "title": "spt binary CLI surface: send/ring/ready(+--once)/list/stop/whoami, stable arg shapes + exit codes",
2026-06-22T00:46:25.6149455Z       "requiredStages": [
2026-06-22T00:46:25.6149557Z         "impl",
2026-06-22T00:46:25.6149665Z         "unit"
2026-06-22T00:46:25.6149770Z       ],
2026-06-22T00:46:25.6149872Z       "stages": {
2026-06-22T00:46:25.6149971Z         "doc": {
2026-06-22T00:46:25.6150084Z           "complete": false,
2026-06-22T00:46:25.6150185Z           "evidence": []
2026-06-22T00:46:25.6150292Z         },
2026-06-22T00:46:25.6150396Z         "impl": {
2026-06-22T00:46:25.6150520Z           "complete": true,
2026-06-22T00:46:25.6150635Z           "evidence": [
2026-06-22T00:46:25.6150739Z             {
2026-06-22T00:46:25.6150865Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6150964Z               "line": 11
2026-06-22T00:46:25.6151073Z             },
2026-06-22T00:46:25.6151174Z             {
2026-06-22T00:46:25.6151303Z               "path": "crates/spt/src/main.rs",
2026-06-22T00:46:25.6151403Z               "line": 8
2026-06-22T00:46:25.6151503Z             }
2026-06-22T00:46:25.6151608Z           ]
2026-06-22T00:46:25.6151713Z         },
2026-06-22T00:46:25.6151814Z         "int": {
2026-06-22T00:46:25.6151926Z           "complete": false,
2026-06-22T00:46:25.6152037Z           "evidence": []
2026-06-22T00:46:25.6152138Z         },
2026-06-22T00:46:25.6152246Z         "unit": {
2026-06-22T00:46:25.6152366Z           "complete": true,
2026-06-22T00:46:25.6152476Z           "evidence": [
2026-06-22T00:46:25.6152688Z             {
2026-06-22T00:46:25.6152813Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6153030Z               "line": 7717
2026-06-22T00:46:25.6153130Z             },
2026-06-22T00:46:25.6153239Z             {
2026-06-22T00:46:25.6153364Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6153473Z               "line": 7759
2026-06-22T00:46:25.6153578Z             },
2026-06-22T00:46:25.6153679Z             {
2026-06-22T00:46:25.6153807Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6153916Z               "line": 7808
2026-06-22T00:46:25.6154027Z             },
2026-06-22T00:46:25.6154136Z             {
2026-06-22T00:46:25.6154255Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6154371Z               "line": 7831
2026-06-22T00:46:25.6154475Z             },
2026-06-22T00:46:25.6154580Z             {
2026-06-22T00:46:25.6154705Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6154823Z               "line": 9807
2026-06-22T00:46:25.6154928Z             },
2026-06-22T00:46:25.6155015Z             {
2026-06-22T00:46:25.6155152Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6155263Z               "line": 9816
2026-06-22T00:46:25.6155372Z             },
2026-06-22T00:46:25.6155475Z             {
2026-06-22T00:46:25.6155599Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6155710Z               "line": 9830
2026-06-22T00:46:25.6155808Z             }
2026-06-22T00:46:25.6155909Z           ]
2026-06-22T00:46:25.6156010Z         }
2026-06-22T00:46:25.6156118Z       }
2026-06-22T00:46:25.6156219Z     },
2026-06-22T00:46:25.6156324Z     {
2026-06-22T00:46:25.6156433Z       "id": "REQ-MSG-3",
2026-06-22T00:46:25.6156829Z       "title": "Ready-agent lifecycle: register perch (info.json + listener + registry address) on ready, drain spooled backlog on startup, clean teardown",
2026-06-22T00:46:25.6156959Z       "requiredStages": [
2026-06-22T00:46:25.6157063Z         "impl",
2026-06-22T00:46:25.6157173Z         "unit",
2026-06-22T00:46:25.6157278Z         "int"
2026-06-22T00:46:25.6157377Z       ],
2026-06-22T00:46:25.6157492Z       "stages": {
2026-06-22T00:46:25.6157593Z         "doc": {
2026-06-22T00:46:25.6157701Z           "complete": false,
2026-06-22T00:46:25.6157810Z           "evidence": []
2026-06-22T00:46:25.6157906Z         },
2026-06-22T00:46:25.6158008Z         "impl": {
2026-06-22T00:46:25.6158117Z           "complete": true,
2026-06-22T00:46:25.6158228Z           "evidence": [
2026-06-22T00:46:25.6158337Z             {
2026-06-22T00:46:25.6158485Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-22T00:46:25.6158591Z               "line": 19
2026-06-22T00:46:25.6158695Z             },
2026-06-22T00:46:25.6158805Z             {
2026-06-22T00:46:25.6158929Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T00:46:25.6159115Z               "line": 21
2026-06-22T00:46:25.6159210Z             },
2026-06-22T00:46:25.6159315Z             {
2026-06-22T00:46:25.6159454Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T00:46:25.6159558Z               "line": 48
2026-06-22T00:46:25.6159668Z             },
2026-06-22T00:46:25.6159769Z             {
2026-06-22T00:46:25.6159906Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T00:46:25.6160011Z               "line": 174
2026-06-22T00:46:25.6160122Z             }
2026-06-22T00:46:25.6160216Z           ]
2026-06-22T00:46:25.6160321Z         },
2026-06-22T00:46:25.6160432Z         "int": {
2026-06-22T00:46:25.6160545Z           "complete": true,
2026-06-22T00:46:25.6160648Z           "evidence": [
2026-06-22T00:46:25.6160754Z             {
2026-06-22T00:46:25.6160923Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-22T00:46:25.6161028Z               "line": 10
2026-06-22T00:46:25.6161143Z             },
2026-06-22T00:46:25.6161252Z             {
2026-06-22T00:46:25.6161396Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-22T00:46:25.6161614Z               "line": 56
2026-06-22T00:46:25.6161720Z             }
2026-06-22T00:46:25.6161820Z           ]
2026-06-22T00:46:25.6162016Z         },
2026-06-22T00:46:25.6162125Z         "unit": {
2026-06-22T00:46:25.6162229Z           "complete": true,
2026-06-22T00:46:25.6162341Z           "evidence": [
2026-06-22T00:46:25.6162449Z             {
2026-06-22T00:46:25.6162578Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T00:46:25.6162693Z               "line": 228
2026-06-22T00:46:25.6162797Z             },
2026-06-22T00:46:25.6162902Z             {
2026-06-22T00:46:25.6163036Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T00:46:25.6163149Z               "line": 247
2026-06-22T00:46:25.6163258Z             },
2026-06-22T00:46:25.6163359Z             {
2026-06-22T00:46:25.6163485Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T00:46:25.6163595Z               "line": 270
2026-06-22T00:46:25.6163695Z             }
2026-06-22T00:46:25.6163800Z           ]
2026-06-22T00:46:25.6163904Z         }
2026-06-22T00:46:25.6164010Z       }
2026-06-22T00:46:25.6164110Z     },
2026-06-22T00:46:25.6164219Z     {
2026-06-22T00:46:25.6164330Z       "id": "REQ-MSG-4",
2026-06-22T00:46:25.6165183Z       "title": "Listener stream stdout emits EVENT envelope lines (sister-format, ADR-0001): parse the __REPLY_TO__ frame, pass pre-formed typed envelopes through verbatim (no double-wrap), compose <EVENT type=\"msg\" from=…> otherwise, chunk oversized lines into EVENT-PART",
2026-06-22T00:46:25.6168028Z       "requiredStages": [
2026-06-22T00:46:25.6168167Z         "impl",
2026-06-22T00:46:25.6168275Z         "unit",
2026-06-22T00:46:25.6168365Z         "int"
2026-06-22T00:46:25.6168466Z       ],
2026-06-22T00:46:25.6168568Z       "stages": {
2026-06-22T00:46:25.6168673Z         "doc": {
2026-06-22T00:46:25.6168793Z           "complete": false,
2026-06-22T00:46:25.6168902Z           "evidence": []
2026-06-22T00:46:25.6169094Z         },
2026-06-22T00:46:25.6169207Z         "impl": {
2026-06-22T00:46:25.6169316Z           "complete": true,
2026-06-22T00:46:25.6169423Z           "evidence": [
2026-06-22T00:46:25.6169531Z             {
2026-06-22T00:46:25.6169670Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T00:46:25.6169775Z               "line": 19
2026-06-22T00:46:25.6169865Z             },
2026-06-22T00:46:25.6169965Z             {
2026-06-22T00:46:25.6170099Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T00:46:25.6170209Z               "line": 46
2026-06-22T00:46:25.6170305Z             },
2026-06-22T00:46:25.6170409Z             {
2026-06-22T00:46:25.6170552Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.6170658Z               "line": 532
2026-06-22T00:46:25.6170762Z             },
2026-06-22T00:46:25.6170867Z             {
2026-06-22T00:46:25.6170988Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6171086Z               "line": 3110
2026-06-22T00:46:25.6171190Z             }
2026-06-22T00:46:25.6171295Z           ]
2026-06-22T00:46:25.6171398Z         },
2026-06-22T00:46:25.6171502Z         "int": {
2026-06-22T00:46:25.6171617Z           "complete": true,
2026-06-22T00:46:25.6171722Z           "evidence": [
2026-06-22T00:46:25.6171827Z             {
2026-06-22T00:46:25.6171980Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-22T00:46:25.6172084Z               "line": 98
2026-06-22T00:46:25.6172179Z             },
2026-06-22T00:46:25.6172280Z             {
2026-06-22T00:46:25.6172418Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-22T00:46:25.6172533Z               "line": 128
2026-06-22T00:46:25.6172638Z             }
2026-06-22T00:46:25.6172742Z           ]
2026-06-22T00:46:25.6172828Z         },
2026-06-22T00:46:25.6172938Z         "unit": {
2026-06-22T00:46:25.6173042Z           "complete": true,
2026-06-22T00:46:25.6173157Z           "evidence": [
2026-06-22T00:46:25.6173258Z             {
2026-06-22T00:46:25.6173390Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T00:46:25.6173639Z               "line": 68
2026-06-22T00:46:25.6173742Z             },
2026-06-22T00:46:25.6173937Z             {
2026-06-22T00:46:25.6174059Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T00:46:25.6174174Z               "line": 79
2026-06-22T00:46:25.6174275Z             },
2026-06-22T00:46:25.6174379Z             {
2026-06-22T00:46:25.6174508Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T00:46:25.6174618Z               "line": 90
2026-06-22T00:46:25.6174722Z             },
2026-06-22T00:46:25.6174823Z             {
2026-06-22T00:46:25.6174947Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T00:46:25.6175060Z               "line": 151
2026-06-22T00:46:25.6175152Z             }
2026-06-22T00:46:25.6175256Z           ]
2026-06-22T00:46:25.6175351Z         }
2026-06-22T00:46:25.6175448Z       }
2026-06-22T00:46:25.6175553Z     },
2026-06-22T00:46:25.6175652Z     {
2026-06-22T00:46:25.6175768Z       "id": "REQ-MSG-5",
2026-06-22T00:46:25.6176534Z       "title": "user-msg envelope kind + daemon identity gate: a Gateway endpoint / the local user's CLI author user-msg (the user's authority); agent-family senders re-stamped to plain msg; identity-gated never payload-trusted (KH 7.3/7.5); wire-additive (N-1 receivers tolerate the new type)",
2026-06-22T00:46:25.6176647Z       "requiredStages": [
2026-06-22T00:46:25.6176753Z         "doc",
2026-06-22T00:46:25.6176859Z         "impl",
2026-06-22T00:46:25.6176962Z         "unit"
2026-06-22T00:46:25.6177067Z       ],
2026-06-22T00:46:25.6177173Z       "stages": {
2026-06-22T00:46:25.6177277Z         "doc": {
2026-06-22T00:46:25.6177388Z           "complete": true,
2026-06-22T00:46:25.6177492Z           "evidence": [
2026-06-22T00:46:25.6177596Z             {
2026-06-22T00:46:25.6177717Z               "path": "CONTEXT.md",
2026-06-22T00:46:25.6177820Z               "line": 231
2026-06-22T00:46:25.6177920Z             }
2026-06-22T00:46:25.6178017Z           ]
2026-06-22T00:46:25.6178130Z         },
2026-06-22T00:46:25.6178235Z         "impl": {
2026-06-22T00:46:25.6178341Z           "complete": true,
2026-06-22T00:46:25.6178459Z           "evidence": [
2026-06-22T00:46:25.6178569Z             {
2026-06-22T00:46:25.6178718Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T00:46:25.6178826Z               "line": 60
2026-06-22T00:46:25.6178930Z             },
2026-06-22T00:46:25.6179115Z             {
2026-06-22T00:46:25.6179257Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T00:46:25.6179368Z               "line": 126
2026-06-22T00:46:25.6179472Z             },
2026-06-22T00:46:25.6179572Z             {
2026-06-22T00:46:25.6179701Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T00:46:25.6179820Z               "line": 135
2026-06-22T00:46:25.6179916Z             },
2026-06-22T00:46:25.6180011Z             {
2026-06-22T00:46:25.6180149Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T00:46:25.6180250Z               "line": 149
2026-06-22T00:46:25.6180359Z             },
2026-06-22T00:46:25.6180458Z             {
2026-06-22T00:46:25.6180593Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T00:46:25.6180697Z               "line": 178
2026-06-22T00:46:25.6180802Z             },
2026-06-22T00:46:25.6180899Z             {
2026-06-22T00:46:25.6181021Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6181131Z               "line": 2802
2026-06-22T00:46:25.6181238Z             }
2026-06-22T00:46:25.6181340Z           ]
2026-06-22T00:46:25.6181441Z         },
2026-06-22T00:46:25.6181552Z         "int": {
2026-06-22T00:46:25.6181660Z           "complete": true,
2026-06-22T00:46:25.6181769Z           "evidence": [
2026-06-22T00:46:25.6181869Z             {
2026-06-22T00:46:25.6182010Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-22T00:46:25.6182119Z               "line": 19
2026-06-22T00:46:25.6182220Z             }
2026-06-22T00:46:25.6182329Z           ]
2026-06-22T00:46:25.6182535Z         },
2026-06-22T00:46:25.6182640Z         "unit": {
2026-06-22T00:46:25.6182748Z           "complete": true,
2026-06-22T00:46:25.6182955Z           "evidence": [
2026-06-22T00:46:25.6183059Z             {
2026-06-22T00:46:25.6183193Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T00:46:25.6183302Z               "line": 192
2026-06-22T00:46:25.6183402Z             },
2026-06-22T00:46:25.6183499Z             {
2026-06-22T00:46:25.6183641Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-22T00:46:25.6183751Z               "line": 154
2026-06-22T00:46:25.6183856Z             },
2026-06-22T00:46:25.6183955Z             {
2026-06-22T00:46:25.6184090Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T00:46:25.6184194Z               "line": 122
2026-06-22T00:46:25.6184298Z             },
2026-06-22T00:46:25.6184402Z             {
2026-06-22T00:46:25.6184535Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T00:46:25.6184643Z               "line": 452
2026-06-22T00:46:25.6184754Z             },
2026-06-22T00:46:25.6184854Z             {
2026-06-22T00:46:25.6185001Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T00:46:25.6185102Z               "line": 501
2026-06-22T00:46:25.6185197Z             },
2026-06-22T00:46:25.6185291Z             {
2026-06-22T00:46:25.6185431Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T00:46:25.6185540Z               "line": 517
2026-06-22T00:46:25.6185645Z             },
2026-06-22T00:46:25.6185746Z             {
2026-06-22T00:46:25.6185879Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T00:46:25.6185984Z               "line": 536
2026-06-22T00:46:25.6186084Z             },
2026-06-22T00:46:25.6186184Z             {
2026-06-22T00:46:25.6186313Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6186432Z               "line": 7660
2026-06-22T00:46:25.6186532Z             }
2026-06-22T00:46:25.6186633Z           ]
2026-06-22T00:46:25.6186742Z         }
2026-06-22T00:46:25.6186842Z       }
2026-06-22T00:46:25.6186943Z     },
2026-06-22T00:46:25.6187038Z     {
2026-06-22T00:46:25.6187151Z       "id": "REQ-MSG-6",
2026-06-22T00:46:25.6188795Z       "title": "cross-node Gateway user-msg honored via advertised endpoint_type: a user-msg from a Gateway-typed origin survives the receive_wan funnel as user-msg (vs the fail-closed re-stamp), keyed on the QUIC-handshake-proven origin node (never wire `from`). Trust boundary = subnet membership (operator-ratified 2026-06-13); no defense against an in-subnet member forging the type. Instance.endpoint_type is an additive serde-default field extending REQ-INST-7's data model. Absent/unknown type → re-stamp (N-1 rollout grace)",
2026-06-22T00:46:25.6188911Z       "requiredStages": [
2026-06-22T00:46:25.6189110Z         "doc",
2026-06-22T00:46:25.6189207Z         "impl",
2026-06-22T00:46:25.6189307Z         "unit"
2026-06-22T00:46:25.6189410Z       ],
2026-06-22T00:46:25.6189520Z       "stages": {
2026-06-22T00:46:25.6189624Z         "doc": {
2026-06-22T00:46:25.6189736Z           "complete": true,
2026-06-22T00:46:25.6189842Z           "evidence": [
2026-06-22T00:46:25.6189947Z             {
2026-06-22T00:46:25.6190055Z               "path": "CONTEXT.md",
2026-06-22T00:46:25.6190156Z               "line": 234
2026-06-22T00:46:25.6190257Z             }
2026-06-22T00:46:25.6190361Z           ]
2026-06-22T00:46:25.6190461Z         },
2026-06-22T00:46:25.6190567Z         "impl": {
2026-06-22T00:46:25.6190671Z           "complete": true,
2026-06-22T00:46:25.6190771Z           "evidence": [
2026-06-22T00:46:25.6190877Z             {
2026-06-22T00:46:25.6191033Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.6191144Z               "line": 177
2026-06-22T00:46:25.6191248Z             },
2026-06-22T00:46:25.6191353Z             {
2026-06-22T00:46:25.6191507Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.6191605Z               "line": 428
2026-06-22T00:46:25.6191817Z             },
2026-06-22T00:46:25.6191920Z             {
2026-06-22T00:46:25.6192060Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.6192267Z               "line": 451
2026-06-22T00:46:25.6192377Z             },
2026-06-22T00:46:25.6192477Z             {
2026-06-22T00:46:25.6192608Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T00:46:25.6192718Z               "line": 89
2026-06-22T00:46:25.6192819Z             },
2026-06-22T00:46:25.6192923Z             {
2026-06-22T00:46:25.6193057Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.6193172Z               "line": 155
2026-06-22T00:46:25.6193271Z             }
2026-06-22T00:46:25.6193372Z           ]
2026-06-22T00:46:25.6193472Z         },
2026-06-22T00:46:25.6193571Z         "int": {
2026-06-22T00:46:25.6193696Z           "complete": false,
2026-06-22T00:46:25.6193800Z           "evidence": []
2026-06-22T00:46:25.6193905Z         },
2026-06-22T00:46:25.6194011Z         "unit": {
2026-06-22T00:46:25.6194120Z           "complete": true,
2026-06-22T00:46:25.6194229Z           "evidence": [
2026-06-22T00:46:25.6194331Z             {
2026-06-22T00:46:25.6194482Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.6194578Z               "line": 1746
2026-06-22T00:46:25.6194684Z             },
2026-06-22T00:46:25.6194782Z             {
2026-06-22T00:46:25.6194915Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T00:46:25.6195025Z               "line": 219
2026-06-22T00:46:25.6195127Z             }
2026-06-22T00:46:25.6195227Z           ]
2026-06-22T00:46:25.6195333Z         }
2026-06-22T00:46:25.6195428Z       }
2026-06-22T00:46:25.6195537Z     },
2026-06-22T00:46:25.6195629Z     {
2026-06-22T00:46:25.6195748Z       "id": "REQ-MSG-ENVELOPE",
2026-06-22T00:46:25.6199448Z       "title": "The <EVENT type=\"msg\" from=…>body</EVENT> envelope (spt-proto::event, the ADR-0001 grammar) is the SOLE canonical arriving-message format at EVERY harness arriving-message surface on an AGENT perch — api listen AND api poll/worker-poll, byte-identical (reverses REQ-MSG-4's 'hook drains keep the raw frame by contract'). SCOPE CARVE-OUT: the shell-command relay (api poll <shell-id> --link, cmd_poll_shell) is a distinct internal transport carrying RAW MAC'd stamped frames the shell child consumes verbatim — NOT an arriving-message surface, deliberately EXEMPT from <EVENT> composition (notify_shell_e2e guards this boundary). __REPLY_TO__ — mis-elevated during the clean-room port to a fake ADR-0001 'stable wire format' (spt-msg/wire.rs, lib.rs) — is REMOVED entirely (spool format_row, the spt-msg TCP frame, emit parse_frame); (from, body) carried structurally, <EVENT> composed once at the delivery boundary. No legacy sister-interop (spt-core never required it). Reply-correlation rebinds onto the structural from / <EVENT from=…> attribute (ADR-0009 access-gate + ADR-0012 Psyche/spt-live reply-target). Self-delimiting by construction → finding F-002 (non-self-delimiting multi-message poll) dissolves. ADR-0020.",
2026-06-22T00:46:25.6199608Z       "requiredStages": [
2026-06-22T00:46:25.6199714Z         "doc",
2026-06-22T00:46:25.6199820Z         "impl",
2026-06-22T00:46:25.6199923Z         "unit",
2026-06-22T00:46:25.6200027Z         "int"
2026-06-22T00:46:25.6200132Z       ],
2026-06-22T00:46:25.6200235Z       "stages": {
2026-06-22T00:46:25.6200339Z         "doc": {
2026-06-22T00:46:25.6200454Z           "complete": true,
2026-06-22T00:46:25.6200559Z           "evidence": [
2026-06-22T00:46:25.6200663Z             {
2026-06-22T00:46:25.6200926Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-22T00:46:25.6201036Z               "line": 47
2026-06-22T00:46:25.6201136Z             }
2026-06-22T00:46:25.6201245Z           ]
2026-06-22T00:46:25.6201346Z         },
2026-06-22T00:46:25.6201451Z         "impl": {
2026-06-22T00:46:25.6201551Z           "complete": true,
2026-06-22T00:46:25.6201660Z           "evidence": [
2026-06-22T00:46:25.6201866Z             {
2026-06-22T00:46:25.6202000Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T00:46:25.6202195Z               "line": 20
2026-06-22T00:46:25.6202290Z             },
2026-06-22T00:46:25.6202391Z             {
2026-06-22T00:46:25.6202514Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T00:46:25.6202625Z               "line": 33
2026-06-22T00:46:25.6202730Z             },
2026-06-22T00:46:25.6202832Z             {
2026-06-22T00:46:25.6202966Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T00:46:25.6203065Z               "line": 47
2026-06-22T00:46:25.6203168Z             },
2026-06-22T00:46:25.6203269Z             {
2026-06-22T00:46:25.6203403Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T00:46:25.6203502Z               "line": 58
2026-06-22T00:46:25.6203603Z             },
2026-06-22T00:46:25.6203698Z             {
2026-06-22T00:46:25.6203831Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T00:46:25.6203942Z               "line": 14
2026-06-22T00:46:25.6204041Z             },
2026-06-22T00:46:25.6204145Z             {
2026-06-22T00:46:25.6204266Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T00:46:25.6204375Z               "line": 27
2026-06-22T00:46:25.6204494Z             },
2026-06-22T00:46:25.6204595Z             {
2026-06-22T00:46:25.6204722Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T00:46:25.6204833Z               "line": 40
2026-06-22T00:46:25.6204934Z             },
2026-06-22T00:46:25.6205027Z             {
2026-06-22T00:46:25.6205157Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T00:46:25.6205259Z               "line": 92
2026-06-22T00:46:25.6205356Z             },
2026-06-22T00:46:25.6205465Z             {
2026-06-22T00:46:25.6205608Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T00:46:25.6205716Z               "line": 143
2026-06-22T00:46:25.6205826Z             },
2026-06-22T00:46:25.6205931Z             {
2026-06-22T00:46:25.6206064Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T00:46:25.6206179Z               "line": 216
2026-06-22T00:46:25.6206284Z             },
2026-06-22T00:46:25.6206388Z             {
2026-06-22T00:46:25.6206523Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.6206637Z               "line": 533
2026-06-22T00:46:25.6206741Z             },
2026-06-22T00:46:25.6206843Z             {
2026-06-22T00:46:25.6206980Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T00:46:25.6207084Z               "line": 78
2026-06-22T00:46:25.6207181Z             },
2026-06-22T00:46:25.6207280Z             {
2026-06-22T00:46:25.6207414Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6207524Z               "line": 3111
2026-06-22T00:46:25.6207633Z             }
2026-06-22T00:46:25.6207729Z           ]
2026-06-22T00:46:25.6207834Z         },
2026-06-22T00:46:25.6207938Z         "int": {
2026-06-22T00:46:25.6208054Z           "complete": true,
2026-06-22T00:46:25.6208154Z           "evidence": [
2026-06-22T00:46:25.6208257Z             {
2026-06-22T00:46:25.6208419Z               "path": "crates/spt/tests/poll_envelope_e2e.rs",
2026-06-22T00:46:25.6208520Z               "line": 15
2026-06-22T00:46:25.6208614Z             }
2026-06-22T00:46:25.6208714Z           ]
2026-06-22T00:46:25.6208820Z         },
2026-06-22T00:46:25.6208914Z         "unit": {
2026-06-22T00:46:25.6209096Z           "complete": true,
2026-06-22T00:46:25.6209201Z           "evidence": [
2026-06-22T00:46:25.6209295Z             {
2026-06-22T00:46:25.6209435Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T00:46:25.6209544Z               "line": 102
2026-06-22T00:46:25.6209649Z             },
2026-06-22T00:46:25.6209750Z             {
2026-06-22T00:46:25.6209878Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T00:46:25.6209988Z               "line": 137
2026-06-22T00:46:25.6210083Z             },
2026-06-22T00:46:25.6210279Z             {
2026-06-22T00:46:25.6210412Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T00:46:25.6210611Z               "line": 98
2026-06-22T00:46:25.6210721Z             },
2026-06-22T00:46:25.6210824Z             {
2026-06-22T00:46:25.6210952Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T00:46:25.6211062Z               "line": 106
2026-06-22T00:46:25.6211167Z             },
2026-06-22T00:46:25.6211271Z             {
2026-06-22T00:46:25.6211405Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T00:46:25.6211514Z               "line": 113
2026-06-22T00:46:25.6211616Z             },
2026-06-22T00:46:25.6211720Z             {
2026-06-22T00:46:25.6211848Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T00:46:25.6211954Z               "line": 122
2026-06-22T00:46:25.6212058Z             }
2026-06-22T00:46:25.6212153Z           ]
2026-06-22T00:46:25.6212260Z         }
2026-06-22T00:46:25.6212359Z       }
2026-06-22T00:46:25.6212463Z     },
2026-06-22T00:46:25.6212565Z     {
2026-06-22T00:46:25.6212707Z       "id": "REQ-MSG-IDLE-TRANSLATION-BINARY",
2026-06-22T00:46:25.6217573Z       "title": "spt-hosted idle message delivery via an adapter TRANSLATION BINARY (ADR-0022). New opt-in manifest section `[message-idle-translation-binary]` = a TABLE carrying a `path` scalar (doyle OPT-B ruling: modeled as a table, not a bare top-level scalar, so a preceding section cannot silently absorb it + N+1 extensible; spt-core does NOT deny_unknown_fields, so a future key degrades gracefully); spt-core LIFECYCLE-manages it (spawn when the endpoint comes up, terminate when it goes down). The binary is a PURE stdin→stdout filter; spt-core owns EVERY PTY write. stdin (JSON-lines): `{type:\"init\",endpoint_id,node}` first · `{type:\"event\",envelope:\"<EVENT…>\"}` per inbound message (ADR-0020 envelope) · `{type:\"input\"}` content-free ping on each operator keystroke (binary tracks user-idle for its own idle-gated buffering; PTY input content NOT duplicated). stdout (JSON-lines): keystroke-commands `{key:…}`/`{delay_ms:…}`/`{text:…}` (extensible). spt-core applies the emitted sequence to the broker PTY ATOMICALLY (the W1 coordination — REQ-HAZARD-INJECT-CONTROL-COEXIST). The daemon poll feed is the ONE idle substrate for both topologies (Q1=A): harness-hosted consumer = the Monitor child, spt-hosted consumer = this binary; spt-core PREFERS a perch's poll listener if one exists (so spt-hosted can run a listener AND keep `spt rc`). Idle-only; busy/mid-turn = adapter hook-injection. Closes the current grounding gap: `api bind` registers no listener port → a listener-less spt-hosted perch SPOOLS inbound (only spooling+adapter-poll works today) → this delivers real inbound into the PTY. The v0.11.0 raw inject is the degenerate `{text:payload}{key:enter}` case. (v0.13.0)",
2026-06-22T00:46:25.6217732Z       "requiredStages": [
2026-06-22T00:46:25.6217836Z         "doc",
2026-06-22T00:46:25.6217936Z         "impl",
2026-06-22T00:46:25.6218042Z         "unit",
2026-06-22T00:46:25.6218150Z         "int"
2026-06-22T00:46:25.6218255Z       ],
2026-06-22T00:46:25.6218362Z       "stages": {
2026-06-22T00:46:25.6218474Z         "doc": {
2026-06-22T00:46:25.6218584Z           "complete": true,
2026-06-22T00:46:25.6218691Z           "evidence": [
2026-06-22T00:46:25.6218793Z             {
2026-06-22T00:46:25.6219027Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-22T00:46:25.6219136Z               "line": 277
2026-06-22T00:46:25.6219241Z             },
2026-06-22T00:46:25.6219351Z             {
2026-06-22T00:46:25.6219479Z               "path": "docs/MANIFEST.md",
2026-06-22T00:46:25.6219589Z               "line": 198
2026-06-22T00:46:25.6219694Z             }
2026-06-22T00:46:25.6219794Z           ]
2026-06-22T00:46:25.6219904Z         },
2026-06-22T00:46:25.6220004Z         "impl": {
2026-06-22T00:46:25.6220123Z           "complete": true,
2026-06-22T00:46:25.6220224Z           "evidence": [
2026-06-22T00:46:25.6220324Z             {
2026-06-22T00:46:25.6220573Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.6220681Z               "line": 1120
2026-06-22T00:46:25.6220882Z             },
2026-06-22T00:46:25.6220977Z             {
2026-06-22T00:46:25.6221138Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T00:46:25.6221248Z               "line": 23
2026-06-22T00:46:25.6221351Z             },
2026-06-22T00:46:25.6221445Z             {
2026-06-22T00:46:25.6221594Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T00:46:25.6221703Z               "line": 91
2026-06-22T00:46:25.6221803Z             },
2026-06-22T00:46:25.6221904Z             {
2026-06-22T00:46:25.6222056Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T00:46:25.6222156Z               "line": 239
2026-06-22T00:46:25.6222261Z             },
2026-06-22T00:46:25.6222361Z             {
2026-06-22T00:46:25.6222514Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T00:46:25.6222619Z               "line": 287
2026-06-22T00:46:25.6222732Z             },
2026-06-22T00:46:25.6222834Z             {
2026-06-22T00:46:25.6222990Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T00:46:25.6223100Z               "line": 311
2026-06-22T00:46:25.6223206Z             },
2026-06-22T00:46:25.6223310Z             {
2026-06-22T00:46:25.6223464Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.6223577Z               "line": 60
2026-06-22T00:46:25.6223677Z             },
2026-06-22T00:46:25.6223783Z             {
2026-06-22T00:46:25.6223934Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.6224043Z               "line": 889
2026-06-22T00:46:25.6224143Z             }
2026-06-22T00:46:25.6224237Z           ]
2026-06-22T00:46:25.6224341Z         },
2026-06-22T00:46:25.6224441Z         "int": {
2026-06-22T00:46:25.6224552Z           "complete": true,
2026-06-22T00:46:25.6224660Z           "evidence": [
2026-06-22T00:46:25.6224766Z             {
2026-06-22T00:46:25.6224951Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T00:46:25.6225071Z               "line": 1119
2026-06-22T00:46:25.6225171Z             },
2026-06-22T00:46:25.6225280Z             {
2026-06-22T00:46:25.6225448Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T00:46:25.6225562Z               "line": 1224
2026-06-22T00:46:25.6225662Z             },
2026-06-22T00:46:25.6225763Z             {
2026-06-22T00:46:25.6225934Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T00:46:25.6226040Z               "line": 1292
2026-06-22T00:46:25.6226148Z             },
2026-06-22T00:46:25.6226258Z             {
2026-06-22T00:46:25.6226431Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T00:46:25.6226534Z               "line": 1385
2026-06-22T00:46:25.6226639Z             }
2026-06-22T00:46:25.6226743Z           ]
2026-06-22T00:46:25.6226841Z         },
2026-06-22T00:46:25.6226956Z         "unit": {
2026-06-22T00:46:25.6227066Z           "complete": true,
2026-06-22T00:46:25.6227179Z           "evidence": [
2026-06-22T00:46:25.6227280Z             {
2026-06-22T00:46:25.6227424Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T00:46:25.6227532Z               "line": 270
2026-06-22T00:46:25.6227648Z             },
2026-06-22T00:46:25.6227795Z             {
2026-06-22T00:46:25.6227948Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T00:46:25.6228057Z               "line": 350
2026-06-22T00:46:25.6228157Z             },
2026-06-22T00:46:25.6228263Z             {
2026-06-22T00:46:25.6228411Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T00:46:25.6228519Z               "line": 381
2026-06-22T00:46:25.6228626Z             },
2026-06-22T00:46:25.6228724Z             {
2026-06-22T00:46:25.6228869Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T00:46:25.6229159Z               "line": 411
2026-06-22T00:46:25.6229265Z             },
2026-06-22T00:46:25.6229372Z             {
2026-06-22T00:46:25.6229611Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T00:46:25.6229739Z               "line": 440
2026-06-22T00:46:25.6229840Z             },
2026-06-22T00:46:25.6229940Z             {
2026-06-22T00:46:25.6230092Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.6230208Z               "line": 1181
2026-06-22T00:46:25.6230312Z             }
2026-06-22T00:46:25.6230411Z           ]
2026-06-22T00:46:25.6230513Z         }
2026-06-22T00:46:25.6230607Z       }
2026-06-22T00:46:25.6230702Z     },
2026-06-22T00:46:25.6230794Z     {
2026-06-22T00:46:25.6230894Z       "id": "REQ-NET-1",
2026-06-22T00:46:25.6245658Z       "title": "WAN messaging first-class, behind default-on net feature flag",
2026-06-22T00:46:25.6245838Z       "requiredStages": [
2026-06-22T00:46:25.6245977Z         "impl",
2026-06-22T00:46:25.6246085Z         "unit",
2026-06-22T00:46:25.6246220Z         "int"
2026-06-22T00:46:25.6246325Z       ],
2026-06-22T00:46:25.6246439Z       "stages": {
2026-06-22T00:46:25.6246601Z         "doc": {
2026-06-22T00:46:25.6246773Z           "complete": false,
2026-06-22T00:46:25.6246925Z           "evidence": []
2026-06-22T00:46:25.6247054Z         },
2026-06-22T00:46:25.6247208Z         "impl": {
2026-06-22T00:46:25.6247364Z           "complete": true,
2026-06-22T00:46:25.6247513Z           "evidence": [
2026-06-22T00:46:25.6247654Z             {
2026-06-22T00:46:25.6247858Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T00:46:25.6248013Z               "line": 54
2026-06-22T00:46:25.6248148Z             },
2026-06-22T00:46:25.6248290Z             {
2026-06-22T00:46:25.6248487Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T00:46:25.6248643Z               "line": 594
2026-06-22T00:46:25.6248787Z             },
2026-06-22T00:46:25.6248920Z             {
2026-06-22T00:46:25.6249240Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T00:46:25.6249393Z               "line": 130
2026-06-22T00:46:25.6249550Z             },
2026-06-22T00:46:25.6249694Z             {
2026-06-22T00:46:25.6249916Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T00:46:25.6250070Z               "line": 97
2026-06-22T00:46:25.6250208Z             },
2026-06-22T00:46:25.6250337Z             {
2026-06-22T00:46:25.6250540Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T00:46:25.6250698Z               "line": 159
2026-06-22T00:46:25.6250845Z             },
2026-06-22T00:46:25.6250984Z             {
2026-06-22T00:46:25.6251193Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T00:46:25.6251337Z               "line": 175
2026-06-22T00:46:25.6251475Z             },
2026-06-22T00:46:25.6251614Z             {
2026-06-22T00:46:25.6251827Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T00:46:25.6251981Z               "line": 190
2026-06-22T00:46:25.6252128Z             },
2026-06-22T00:46:25.6252272Z             {
2026-06-22T00:46:25.6252466Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T00:46:25.6252630Z               "line": 271
2026-06-22T00:46:25.6252766Z             },
2026-06-22T00:46:25.6252904Z             {
2026-06-22T00:46:25.6253107Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T00:46:25.6253255Z               "line": 306
2026-06-22T00:46:25.6253402Z             },
2026-06-22T00:46:25.6253531Z             {
2026-06-22T00:46:25.6253721Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T00:46:25.6253871Z               "line": 312
2026-06-22T00:46:25.6254017Z             },
2026-06-22T00:46:25.6254152Z             {
2026-06-22T00:46:25.6254351Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T00:46:25.6254505Z               "line": 318
2026-06-22T00:46:25.6254628Z             },
2026-06-22T00:46:25.6254771Z             {
2026-06-22T00:46:25.6255215Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T00:46:25.6255362Z               "line": 334
2026-06-22T00:46:25.6255638Z             },
2026-06-22T00:46:25.6255776Z             {
2026-06-22T00:46:25.6255979Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T00:46:25.6256132Z               "line": 354
2026-06-22T00:46:25.6256265Z             },
2026-06-22T00:46:25.6256398Z             {
2026-06-22T00:46:25.6256608Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-22T00:46:25.6256752Z               "line": 35
2026-06-22T00:46:25.6256890Z             },
2026-06-22T00:46:25.6257033Z             {
2026-06-22T00:46:25.6257228Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-22T00:46:25.6257382Z               "line": 85
2026-06-22T00:46:25.6257519Z             },
2026-06-22T00:46:25.6257643Z             {
2026-06-22T00:46:25.6257838Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T00:46:25.6257992Z               "line": 138
2026-06-22T00:46:25.6258129Z             },
2026-06-22T00:46:25.6258271Z             {
2026-06-22T00:46:25.6258456Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6258617Z               "line": 2953
2026-06-22T00:46:25.6258746Z             },
2026-06-22T00:46:25.6258888Z             {
2026-06-22T00:46:25.6259165Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T00:46:25.6259314Z               "line": 17
2026-06-22T00:46:25.6259457Z             }
2026-06-22T00:46:25.6259600Z           ]
2026-06-22T00:46:25.6259747Z         },
2026-06-22T00:46:25.6259885Z         "int": {
2026-06-22T00:46:25.6260043Z           "complete": true,
2026-06-22T00:46:25.6260190Z           "evidence": [
2026-06-22T00:46:25.6260339Z             {
2026-06-22T00:46:25.6260544Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T00:46:25.6260700Z               "line": 341
2026-06-22T00:46:25.6260849Z             },
2026-06-22T00:46:25.6260997Z             {
2026-06-22T00:46:25.6261205Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T00:46:25.6261344Z               "line": 675
2026-06-22T00:46:25.6261486Z             },
2026-06-22T00:46:25.6261620Z             {
2026-06-22T00:46:25.6261835Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T00:46:25.6261983Z               "line": 973
2026-06-22T00:46:25.6262116Z             }
2026-06-22T00:46:25.6262260Z           ]
2026-06-22T00:46:25.6262382Z         },
2026-06-22T00:46:25.6262512Z         "unit": {
2026-06-22T00:46:25.6262665Z           "complete": true,
2026-06-22T00:46:25.6262818Z           "evidence": [
2026-06-22T00:46:25.6262964Z             {
2026-06-22T00:46:25.6263161Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T00:46:25.6263312Z               "line": 651
2026-06-22T00:46:25.6263436Z             },
2026-06-22T00:46:25.6263577Z             {
2026-06-22T00:46:25.6263777Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T00:46:25.6263929Z               "line": 686
2026-06-22T00:46:25.6264077Z             },
2026-06-22T00:46:25.6264206Z             {
2026-06-22T00:46:25.6264411Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T00:46:25.6264564Z               "line": 940
2026-06-22T00:46:25.6264702Z             },
2026-06-22T00:46:25.6264826Z             {
2026-06-22T00:46:25.6265036Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-22T00:46:25.6265193Z               "line": 201
2026-06-22T00:46:25.6265336Z             },
2026-06-22T00:46:25.6265483Z             {
2026-06-22T00:46:25.6265676Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T00:46:25.6265812Z               "line": 442
2026-06-22T00:46:25.6265951Z             },
2026-06-22T00:46:25.6266090Z             {
2026-06-22T00:46:25.6266293Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T00:46:25.6266407Z               "line": 456
2026-06-22T00:46:25.6266515Z             },
2026-06-22T00:46:25.6266769Z             {
2026-06-22T00:46:25.6266934Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T00:46:25.6267206Z               "line": 475
2026-06-22T00:46:25.6267355Z             },
2026-06-22T00:46:25.6267511Z             {
2026-06-22T00:46:25.6267698Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-22T00:46:25.6267850Z               "line": 120
2026-06-22T00:46:25.6267994Z             },
2026-06-22T00:46:25.6268141Z             {
2026-06-22T00:46:25.6268337Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-22T00:46:25.6268485Z               "line": 163
2026-06-22T00:46:25.6268633Z             },
2026-06-22T00:46:25.6268774Z             {
2026-06-22T00:46:25.6269072Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T00:46:25.6269225Z               "line": 530
2026-06-22T00:46:25.6269377Z             },
2026-06-22T00:46:25.6269520Z             {
2026-06-22T00:46:25.6269688Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T00:46:25.6269840Z               "line": 616
2026-06-22T00:46:25.6269974Z             },
2026-06-22T00:46:25.6270121Z             {
2026-06-22T00:46:25.6270303Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T00:46:25.6270450Z               "line": 1006
2026-06-22T00:46:25.6270598Z             }
2026-06-22T00:46:25.6270736Z           ]
2026-06-22T00:46:25.6270875Z         }
2026-06-22T00:46:25.6271008Z       }
2026-06-22T00:46:25.6271138Z     },
2026-06-22T00:46:25.6271275Z     {
2026-06-22T00:46:25.6271424Z       "id": "REQ-NET-2",
2026-06-22T00:46:25.6271722Z       "title": "n0 relay default + self-host knob + plain-language disclosure",
2026-06-22T00:46:25.6271881Z       "requiredStages": [
2026-06-22T00:46:25.6272032Z         "impl"
2026-06-22T00:46:25.6272167Z       ],
2026-06-22T00:46:25.6272322Z       "stages": {
2026-06-22T00:46:25.6272462Z         "doc": {
2026-06-22T00:46:25.6272619Z           "complete": false,
2026-06-22T00:46:25.6272772Z           "evidence": []
2026-06-22T00:46:25.6272919Z         },
2026-06-22T00:46:25.6273073Z         "impl": {
2026-06-22T00:46:25.6273215Z           "complete": true,
2026-06-22T00:46:25.6273369Z           "evidence": [
2026-06-22T00:46:25.6273510Z             {
2026-06-22T00:46:25.6273721Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T00:46:25.6273867Z               "line": 57
2026-06-22T00:46:25.6274010Z             },
2026-06-22T00:46:25.6274161Z             {
2026-06-22T00:46:25.6274365Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T00:46:25.6274522Z               "line": 71
2026-06-22T00:46:25.6274666Z             },
2026-06-22T00:46:25.6274804Z             {
2026-06-22T00:46:25.6275010Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T00:46:25.6275152Z               "line": 81
2026-06-22T00:46:25.6275305Z             },
2026-06-22T00:46:25.6275444Z             {
2026-06-22T00:46:25.6275649Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T00:46:25.6275796Z               "line": 159
2026-06-22T00:46:25.6275940Z             },
2026-06-22T00:46:25.6276053Z             {
2026-06-22T00:46:25.6276201Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T00:46:25.6276326Z               "line": 175
2026-06-22T00:46:25.6281315Z             },
2026-06-22T00:46:25.6281501Z             {
2026-06-22T00:46:25.6281727Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T00:46:25.6281878Z               "line": 190
2026-06-22T00:46:25.6282018Z             }
2026-06-22T00:46:25.6282145Z           ]
2026-06-22T00:46:25.6282277Z         },
2026-06-22T00:46:25.6282407Z         "int": {
2026-06-22T00:46:25.6282577Z           "complete": false,
2026-06-22T00:46:25.6282732Z           "evidence": []
2026-06-22T00:46:25.6282878Z         },
2026-06-22T00:46:25.6283022Z         "unit": {
2026-06-22T00:46:25.6283179Z           "complete": true,
2026-06-22T00:46:25.6283318Z           "evidence": [
2026-06-22T00:46:25.6283456Z             {
2026-06-22T00:46:25.6283846Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T00:46:25.6284000Z               "line": 402
2026-06-22T00:46:25.6284258Z             }
2026-06-22T00:46:25.6284385Z           ]
2026-06-22T00:46:25.6284508Z         }
2026-06-22T00:46:25.6284651Z       }
2026-06-22T00:46:25.6284787Z     },
2026-06-22T00:46:25.6284921Z     {
2026-06-22T00:46:25.6285069Z       "id": "REQ-NET-3",
2026-06-22T00:46:25.6285350Z       "title": "Cross-node Psyche sync over P2P replaces gh-repo-sync",
2026-06-22T00:46:25.6285512Z       "requiredStages": [
2026-06-22T00:46:25.6285645Z         "impl",
2026-06-22T00:46:25.6285783Z         "unit"
2026-06-22T00:46:25.6285927Z       ],
2026-06-22T00:46:25.6286079Z       "stages": {
2026-06-22T00:46:25.6286209Z         "doc": {
2026-06-22T00:46:25.6286370Z           "complete": false,
2026-06-22T00:46:25.6286514Z           "evidence": []
2026-06-22T00:46:25.6286651Z         },
2026-06-22T00:46:25.6286796Z         "impl": {
2026-06-22T00:46:25.6286966Z           "complete": true,
2026-06-22T00:46:25.6287115Z           "evidence": [
2026-06-22T00:46:25.6287257Z             {
2026-06-22T00:46:25.6287470Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T00:46:25.6287616Z               "line": 39
2026-06-22T00:46:25.6287750Z             },
2026-06-22T00:46:25.6287884Z             {
2026-06-22T00:46:25.6288059Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T00:46:25.6288203Z               "line": 182
2026-06-22T00:46:25.6288326Z             },
2026-06-22T00:46:25.6288461Z             {
2026-06-22T00:46:25.6288660Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T00:46:25.6288809Z               "line": 333
2026-06-22T00:46:25.6289028Z             },
2026-06-22T00:46:25.6289161Z             {
2026-06-22T00:46:25.6289362Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-22T00:46:25.6289504Z               "line": 36
2026-06-22T00:46:25.6289648Z             },
2026-06-22T00:46:25.6289786Z             {
2026-06-22T00:46:25.6290004Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T00:46:25.6290150Z               "line": 158
2026-06-22T00:46:25.6290287Z             },
2026-06-22T00:46:25.6290427Z             {
2026-06-22T00:46:25.6290631Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T00:46:25.6290775Z               "line": 238
2026-06-22T00:46:25.6290907Z             },
2026-06-22T00:46:25.6291046Z             {
2026-06-22T00:46:25.6291251Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T00:46:25.6291399Z               "line": 259
2026-06-22T00:46:25.6291528Z             },
2026-06-22T00:46:25.6291662Z             {
2026-06-22T00:46:25.6291875Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T00:46:25.6292023Z               "line": 317
2026-06-22T00:46:25.6292157Z             },
2026-06-22T00:46:25.6292292Z             {
2026-06-22T00:46:25.6292496Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T00:46:25.6292658Z               "line": 336
2026-06-22T00:46:25.6292799Z             },
2026-06-22T00:46:25.6292938Z             {
2026-06-22T00:46:25.6293157Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T00:46:25.6293301Z               "line": 374
2026-06-22T00:46:25.6293438Z             },
2026-06-22T00:46:25.6293568Z             {
2026-06-22T00:46:25.6293781Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T00:46:25.6293925Z               "line": 419
2026-06-22T00:46:25.6294063Z             },
2026-06-22T00:46:25.6294212Z             {
2026-06-22T00:46:25.6294416Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T00:46:25.6294574Z               "line": 432
2026-06-22T00:46:25.6294712Z             },
2026-06-22T00:46:25.6294842Z             {
2026-06-22T00:46:25.6295049Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T00:46:25.6295192Z               "line": 29
2026-06-22T00:46:25.6295333Z             },
2026-06-22T00:46:25.6295648Z             {
2026-06-22T00:46:25.6295859Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T00:46:25.6296140Z               "line": 72
2026-06-22T00:46:25.6296287Z             },
2026-06-22T00:46:25.6296431Z             {
2026-06-22T00:46:25.6296630Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T00:46:25.6296783Z               "line": 123
2026-06-22T00:46:25.6296921Z             }
2026-06-22T00:46:25.6297065Z           ]
2026-06-22T00:46:25.6297192Z         },
2026-06-22T00:46:25.6297336Z         "int": {
2026-06-22T00:46:25.6297502Z           "complete": false,
2026-06-22T00:46:25.6297642Z           "evidence": []
2026-06-22T00:46:25.6297775Z         },
2026-06-22T00:46:25.6297912Z         "unit": {
2026-06-22T00:46:25.6298078Z           "complete": true,
2026-06-22T00:46:25.6298223Z           "evidence": [
2026-06-22T00:46:25.6298353Z             {
2026-06-22T00:46:25.6298548Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-22T00:46:25.6298711Z               "line": 223
2026-06-22T00:46:25.6298844Z             },
2026-06-22T00:46:25.6299097Z             {
2026-06-22T00:46:25.6299307Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-22T00:46:25.6299445Z               "line": 351
2026-06-22T00:46:25.6299583Z             },
2026-06-22T00:46:25.6299731Z             {
2026-06-22T00:46:25.6299932Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-22T00:46:25.6300083Z               "line": 504
2026-06-22T00:46:25.6300223Z             },
2026-06-22T00:46:25.6300356Z             {
2026-06-22T00:46:25.6300545Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-22T00:46:25.6300696Z               "line": 93
2026-06-22T00:46:25.6300833Z             },
2026-06-22T00:46:25.6300963Z             {
2026-06-22T00:46:25.6301162Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-22T00:46:25.6301297Z               "line": 142
2026-06-22T00:46:25.6301434Z             },
2026-06-22T00:46:25.6301583Z             {
2026-06-22T00:46:25.6301773Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T00:46:25.6301935Z               "line": 315
2026-06-22T00:46:25.6302078Z             },
2026-06-22T00:46:25.6302213Z             {
2026-06-22T00:46:25.6302412Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T00:46:25.6302570Z               "line": 355
2026-06-22T00:46:25.6302717Z             },
2026-06-22T00:46:25.6302852Z             {
2026-06-22T00:46:25.6303061Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T00:46:25.6303200Z               "line": 494
2026-06-22T00:46:25.6303346Z             }
2026-06-22T00:46:25.6303489Z           ]
2026-06-22T00:46:25.6303622Z         }
2026-06-22T00:46:25.6303756Z       }
2026-06-22T00:46:25.6303890Z     },
2026-06-22T00:46:25.6304027Z     {
2026-06-22T00:46:25.6304180Z       "id": "REQ-NODE-IDENTITY",
2026-06-22T00:46:25.6304562Z       "title": "Ed25519 identity primitive: keypair, detached sign/verify, stable pubkey<->hex",
2026-06-22T00:46:25.6304719Z       "requiredStages": [
2026-06-22T00:46:25.6304871Z         "impl",
2026-06-22T00:46:25.6305020Z         "unit"
2026-06-22T00:46:25.6305153Z       ],
2026-06-22T00:46:25.6305300Z       "stages": {
2026-06-22T00:46:25.6305435Z         "doc": {
2026-06-22T00:46:25.6305581Z           "complete": false,
2026-06-22T00:46:25.6305729Z           "evidence": []
2026-06-22T00:46:25.6305879Z         },
2026-06-22T00:46:25.6306017Z         "impl": {
2026-06-22T00:46:25.6306175Z           "complete": true,
2026-06-22T00:46:25.6306327Z           "evidence": [
2026-06-22T00:46:25.6306466Z             {
2026-06-22T00:46:25.6306671Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T00:46:25.6306813Z               "line": 60
2026-06-22T00:46:25.6306957Z             },
2026-06-22T00:46:25.6307095Z             {
2026-06-22T00:46:25.6307276Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T00:46:25.6307419Z               "line": 68
2026-06-22T00:46:25.6307705Z             },
2026-06-22T00:46:25.6307853Z             {
2026-06-22T00:46:25.6308048Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T00:46:25.6308335Z               "line": 86
2026-06-22T00:46:25.6308472Z             },
2026-06-22T00:46:25.6308605Z             {
2026-06-22T00:46:25.6308798Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T00:46:25.6309033Z               "line": 120
2026-06-22T00:46:25.6309180Z             },
2026-06-22T00:46:25.6309309Z             {
2026-06-22T00:46:25.6309504Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T00:46:25.6309662Z               "line": 127
2026-06-22T00:46:25.6309805Z             },
2026-06-22T00:46:25.6309948Z             {
2026-06-22T00:46:25.6310134Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T00:46:25.6310286Z               "line": 143
2026-06-22T00:46:25.6310424Z             },
2026-06-22T00:46:25.6310564Z             {
2026-06-22T00:46:25.6310768Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-22T00:46:25.6310916Z               "line": 16
2026-06-22T00:46:25.6311062Z             }
2026-06-22T00:46:25.6311201Z           ]
2026-06-22T00:46:25.6311336Z         },
2026-06-22T00:46:25.6311480Z         "int": {
2026-06-22T00:46:25.6311627Z           "complete": false,
2026-06-22T00:46:25.6311795Z           "evidence": []
2026-06-22T00:46:25.6311933Z         },
2026-06-22T00:46:25.6312076Z         "unit": {
2026-06-22T00:46:25.6312229Z           "complete": true,
2026-06-22T00:46:25.6312386Z           "evidence": [
2026-06-22T00:46:25.6312528Z             {
2026-06-22T00:46:25.6312730Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T00:46:25.6312877Z               "line": 199
2026-06-22T00:46:25.6313010Z             },
2026-06-22T00:46:25.6313154Z             {
2026-06-22T00:46:25.6313350Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T00:46:25.6313492Z               "line": 218
2026-06-22T00:46:25.6313626Z             },
2026-06-22T00:46:25.6313774Z             {
2026-06-22T00:46:25.6313972Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T00:46:25.6314117Z               "line": 234
2026-06-22T00:46:25.6314263Z             },
2026-06-22T00:46:25.6314402Z             {
2026-06-22T00:46:25.6314606Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T00:46:25.6314745Z               "line": 256
2026-06-22T00:46:25.6314892Z             },
2026-06-22T00:46:25.6315036Z             {
2026-06-22T00:46:25.6315231Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-22T00:46:25.6315375Z               "line": 124
2026-06-22T00:46:25.6315522Z             },
2026-06-22T00:46:25.6315666Z             {
2026-06-22T00:46:25.6315846Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-22T00:46:25.6316000Z               "line": 140
2026-06-22T00:46:25.6316132Z             },
2026-06-22T00:46:25.6316231Z             {
2026-06-22T00:46:25.6316373Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-22T00:46:25.6316491Z               "line": 155
2026-06-22T00:46:25.6316602Z             }
2026-06-22T00:46:25.6316707Z           ]
2026-06-22T00:46:25.6316810Z         }
2026-06-22T00:46:25.6316959Z       }
2026-06-22T00:46:25.6317087Z     },
2026-06-22T00:46:25.6317222Z     {
2026-06-22T00:46:25.6317378Z       "id": "REQ-NOTIF-1",
2026-06-22T00:46:25.6317946Z       "title": "Notification primitive: per-subnet replicated spool, seen/dismissed, resurface-at-boundary, subsumes update+consent prompts",
2026-06-22T00:46:25.6318107Z       "requiredStages": [
2026-06-22T00:46:25.6318251Z         "impl",
2026-06-22T00:46:25.6318394Z         "unit",
2026-06-22T00:46:25.6318529Z         "int"
2026-06-22T00:46:25.6318670Z       ],
2026-06-22T00:46:25.6318810Z       "stages": {
2026-06-22T00:46:25.6319017Z         "doc": {
2026-06-22T00:46:25.6319175Z           "complete": false,
2026-06-22T00:46:25.6319339Z           "evidence": []
2026-06-22T00:46:25.6319502Z         },
2026-06-22T00:46:25.6319784Z         "impl": {
2026-06-22T00:46:25.6319940Z           "complete": true,
2026-06-22T00:46:25.6320212Z           "evidence": [
2026-06-22T00:46:25.6320350Z             {
2026-06-22T00:46:25.6320555Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T00:46:25.6320703Z               "line": 514
2026-06-22T00:46:25.6320842Z             },
2026-06-22T00:46:25.6320975Z             {
2026-06-22T00:46:25.6321171Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T00:46:25.6321319Z               "line": 30
2026-06-22T00:46:25.6321467Z             },
2026-06-22T00:46:25.6321608Z             {
2026-06-22T00:46:25.6321789Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T00:46:25.6321939Z               "line": 69
2026-06-22T00:46:25.6322074Z             },
2026-06-22T00:46:25.6322216Z             {
2026-06-22T00:46:25.6322408Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T00:46:25.6322554Z               "line": 93
2026-06-22T00:46:25.6322703Z             },
2026-06-22T00:46:25.6322846Z             {
2026-06-22T00:46:25.6323032Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T00:46:25.6323184Z               "line": 107
2026-06-22T00:46:25.6323333Z             },
2026-06-22T00:46:25.6323466Z             {
2026-06-22T00:46:25.6323662Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T00:46:25.6323804Z               "line": 142
2026-06-22T00:46:25.6323943Z             },
2026-06-22T00:46:25.6324085Z             {
2026-06-22T00:46:25.6324272Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T00:46:25.6324423Z               "line": 187
2026-06-22T00:46:25.6324552Z             },
2026-06-22T00:46:25.6324696Z             {
2026-06-22T00:46:25.6324891Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T00:46:25.6325034Z               "line": 258
2026-06-22T00:46:25.6325161Z             },
2026-06-22T00:46:25.6325300Z             {
2026-06-22T00:46:25.6325505Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T00:46:25.6325648Z               "line": 372
2026-06-22T00:46:25.6325796Z             },
2026-06-22T00:46:25.6325935Z             {
2026-06-22T00:46:25.6326130Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T00:46:25.6326282Z               "line": 479
2026-06-22T00:46:25.6326421Z             },
2026-06-22T00:46:25.6326565Z             {
2026-06-22T00:46:25.6326758Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T00:46:25.6326905Z               "line": 24
2026-06-22T00:46:25.6327047Z             },
2026-06-22T00:46:25.6327176Z             {
2026-06-22T00:46:25.6327389Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T00:46:25.6327515Z               "line": 34
2026-06-22T00:46:25.6327695Z             },
2026-06-22T00:46:25.6327834Z             {
2026-06-22T00:46:25.6328033Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T00:46:25.6328187Z               "line": 60
2026-06-22T00:46:25.6328334Z             },
2026-06-22T00:46:25.6328487Z             {
2026-06-22T00:46:25.6328682Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T00:46:25.6328868Z               "line": 82
2026-06-22T00:46:25.6329103Z             },
2026-06-22T00:46:25.6329235Z             {
2026-06-22T00:46:25.6329437Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T00:46:25.6329610Z               "line": 94
2026-06-22T00:46:25.6329763Z             },
2026-06-22T00:46:25.6329909Z             {
2026-06-22T00:46:25.6330101Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T00:46:25.6330252Z               "line": 96
2026-06-22T00:46:25.6330396Z             },
2026-06-22T00:46:25.6330538Z             {
2026-06-22T00:46:25.6330739Z               "path": "crates/spt-daemon/src/pump/notif.rs",
2026-06-22T00:46:25.6330886Z               "line": 44
2026-06-22T00:46:25.6331016Z             },
2026-06-22T00:46:25.6331158Z             {
2026-06-22T00:46:25.6331516Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-22T00:46:25.6331655Z               "line": 20
2026-06-22T00:46:25.6331927Z             },
2026-06-22T00:46:25.6332069Z             {
2026-06-22T00:46:25.6332335Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-22T00:46:25.6332470Z               "line": 30
2026-06-22T00:46:25.6332653Z             },
2026-06-22T00:46:25.6332804Z             {
2026-06-22T00:46:25.6333010Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-22T00:46:25.6333167Z               "line": 50
2026-06-22T00:46:25.6333325Z             },
2026-06-22T00:46:25.6333457Z             {
2026-06-22T00:46:25.6333654Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T00:46:25.6333806Z               "line": 28
2026-06-22T00:46:25.6333945Z             },
2026-06-22T00:46:25.6334087Z             {
2026-06-22T00:46:25.6334278Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T00:46:25.6334431Z               "line": 126
2026-06-22T00:46:25.6334579Z             },
2026-06-22T00:46:25.6334717Z             {
2026-06-22T00:46:25.6334904Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T00:46:25.6335059Z               "line": 161
2026-06-22T00:46:25.6335203Z             },
2026-06-22T00:46:25.6335335Z             {
2026-06-22T00:46:25.6335537Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T00:46:25.6335683Z               "line": 202
2026-06-22T00:46:25.6335833Z             },
2026-06-22T00:46:25.6335984Z             {
2026-06-22T00:46:25.6336171Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T00:46:25.6336322Z               "line": 213
2026-06-22T00:46:25.6336467Z             },
2026-06-22T00:46:25.6336614Z             {
2026-06-22T00:46:25.6336791Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T00:46:25.6336938Z               "line": 238
2026-06-22T00:46:25.6337087Z             },
2026-06-22T00:46:25.6337209Z             {
2026-06-22T00:46:25.6337362Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T00:46:25.6337475Z               "line": 261
2026-06-22T00:46:25.6337578Z             },
2026-06-22T00:46:25.6337683Z             {
2026-06-22T00:46:25.6337836Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.6337950Z               "line": 86
2026-06-22T00:46:25.6338094Z             }
2026-06-22T00:46:25.6338246Z           ]
2026-06-22T00:46:25.6338390Z         },
2026-06-22T00:46:25.6338531Z         "int": {
2026-06-22T00:46:25.6338695Z           "complete": true,
2026-06-22T00:46:25.6338851Z           "evidence": [
2026-06-22T00:46:25.6339080Z             {
2026-06-22T00:46:25.6339306Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T00:46:25.6339452Z               "line": 285
2026-06-22T00:46:25.6339601Z             },
2026-06-22T00:46:25.6339738Z             {
2026-06-22T00:46:25.6339935Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-22T00:46:25.6340091Z               "line": 145
2026-06-22T00:46:25.6340243Z             },
2026-06-22T00:46:25.6340384Z             {
2026-06-22T00:46:25.6340594Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T00:46:25.6340746Z               "line": 684
2026-06-22T00:46:25.6340894Z             },
2026-06-22T00:46:25.6341028Z             {
2026-06-22T00:46:25.6341219Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T00:46:25.6341371Z               "line": 1102
2026-06-22T00:46:25.6341519Z             }
2026-06-22T00:46:25.6341652Z           ]
2026-06-22T00:46:25.6341799Z         },
2026-06-22T00:46:25.6341952Z         "unit": {
2026-06-22T00:46:25.6342105Z           "complete": true,
2026-06-22T00:46:25.6342263Z           "evidence": [
2026-06-22T00:46:25.6342406Z             {
2026-06-22T00:46:25.6342610Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T00:46:25.6342757Z               "line": 572
2026-06-22T00:46:25.6342904Z             },
2026-06-22T00:46:25.6343059Z             {
2026-06-22T00:46:25.6343427Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T00:46:25.6343575Z               "line": 636
2026-06-22T00:46:25.6343833Z             },
2026-06-22T00:46:25.6343980Z             {
2026-06-22T00:46:25.6344171Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T00:46:25.6344309Z               "line": 740
2026-06-22T00:46:25.6344463Z             },
2026-06-22T00:46:25.6344586Z             {
2026-06-22T00:46:25.6344787Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T00:46:25.6344934Z               "line": 772
2026-06-22T00:46:25.6345083Z             },
2026-06-22T00:46:25.6345224Z             {
2026-06-22T00:46:25.6345426Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T00:46:25.6345581Z               "line": 840
2026-06-22T00:46:25.6345724Z             },
2026-06-22T00:46:25.6345863Z             {
2026-06-22T00:46:25.6346044Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T00:46:25.6346206Z               "line": 898
2026-06-22T00:46:25.6346340Z             },
2026-06-22T00:46:25.6346488Z             {
2026-06-22T00:46:25.6346703Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T00:46:25.6346854Z               "line": 1173
2026-06-22T00:46:25.6346998Z             },
2026-06-22T00:46:25.6347131Z             {
2026-06-22T00:46:25.6347327Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T00:46:25.6347464Z               "line": 157
2026-06-22T00:46:25.6347599Z             },
2026-06-22T00:46:25.6347736Z             {
2026-06-22T00:46:25.6347931Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T00:46:25.6348082Z               "line": 250
2026-06-22T00:46:25.6348214Z             },
2026-06-22T00:46:25.6348359Z             {
2026-06-22T00:46:25.6348553Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T00:46:25.6348707Z               "line": 273
2026-06-22T00:46:25.6348858Z             },
2026-06-22T00:46:25.6349068Z             {
2026-06-22T00:46:25.6349288Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T00:46:25.6349449Z               "line": 355
2026-06-22T00:46:25.6349594Z             },
2026-06-22T00:46:25.6349735Z             {
2026-06-22T00:46:25.6349937Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T00:46:25.6350093Z               "line": 392
2026-06-22T00:46:25.6350228Z             },
2026-06-22T00:46:25.6350365Z             {
2026-06-22T00:46:25.6350571Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-22T00:46:25.6350731Z               "line": 131
2026-06-22T00:46:25.6350865Z             },
2026-06-22T00:46:25.6350996Z             {
2026-06-22T00:46:25.6351202Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-22T00:46:25.6351349Z               "line": 72
2026-06-22T00:46:25.6351493Z             },
2026-06-22T00:46:25.6351630Z             {
2026-06-22T00:46:25.6351831Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-22T00:46:25.6351983Z               "line": 97
2026-06-22T00:46:25.6352127Z             },
2026-06-22T00:46:25.6352269Z             {
2026-06-22T00:46:25.6352466Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T00:46:25.6352631Z               "line": 379
2026-06-22T00:46:25.6352771Z             },
2026-06-22T00:46:25.6352922Z             {
2026-06-22T00:46:25.6353100Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T00:46:25.6353256Z               "line": 417
2026-06-22T00:46:25.6353394Z             },
2026-06-22T00:46:25.6353529Z             {
2026-06-22T00:46:25.6353725Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T00:46:25.6353873Z               "line": 433
2026-06-22T00:46:25.6354016Z             },
2026-06-22T00:46:25.6354159Z             {
2026-06-22T00:46:25.6354351Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T00:46:25.6354493Z               "line": 472
2026-06-22T00:46:25.6354631Z             },
2026-06-22T00:46:25.6354917Z             {
2026-06-22T00:46:25.6355108Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T00:46:25.6355394Z               "line": 489
2026-06-22T00:46:25.6355532Z             },
2026-06-22T00:46:25.6355671Z             {
2026-06-22T00:46:25.6355866Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T00:46:25.6356014Z               "line": 517
2026-06-22T00:46:25.6356165Z             },
2026-06-22T00:46:25.6356271Z             {
2026-06-22T00:46:25.6356409Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T00:46:25.6356523Z               "line": 548
2026-06-22T00:46:25.6356624Z             },
2026-06-22T00:46:25.6356733Z             {
2026-06-22T00:46:25.6356871Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.6356986Z               "line": 745
2026-06-22T00:46:25.6357090Z             }
2026-06-22T00:46:25.6357195Z           ]
2026-06-22T00:46:25.6357301Z         }
2026-06-22T00:46:25.6357400Z       }
2026-06-22T00:46:25.6357515Z     },
2026-06-22T00:46:25.6357616Z     {
2026-06-22T00:46:25.6357739Z       "id": "REQ-NOTIF-2",
2026-06-22T00:46:25.6358039Z       "title": "spt notify (agent-issued subnet notif) + notif_command manifest seam (harness + shell adapters)",
2026-06-22T00:46:25.6358169Z       "requiredStages": [
2026-06-22T00:46:25.6358278Z         "doc",
2026-06-22T00:46:25.6358381Z         "impl",
2026-06-22T00:46:25.6358486Z         "unit",
2026-06-22T00:46:25.6358591Z         "int"
2026-06-22T00:46:25.6358694Z       ],
2026-06-22T00:46:25.6358799Z       "stages": {
2026-06-22T00:46:25.6358909Z         "doc": {
2026-06-22T00:46:25.6359156Z           "complete": true,
2026-06-22T00:46:25.6359267Z           "evidence": [
2026-06-22T00:46:25.6359375Z             {
2026-06-22T00:46:25.6359529Z               "path": "CONTEXT.md",
2026-06-22T00:46:25.6359643Z               "line": 509
2026-06-22T00:46:25.6359748Z             },
2026-06-22T00:46:25.6359853Z             {
2026-06-22T00:46:25.6359985Z               "path": "docs/MANIFEST.md",
2026-06-22T00:46:25.6360101Z               "line": 123
2026-06-22T00:46:25.6360196Z             }
2026-06-22T00:46:25.6360300Z           ]
2026-06-22T00:46:25.6360412Z         },
2026-06-22T00:46:25.6360511Z         "impl": {
2026-06-22T00:46:25.6360629Z           "complete": true,
2026-06-22T00:46:25.6360750Z           "evidence": [
2026-06-22T00:46:25.6360849Z             {
2026-06-22T00:46:25.6360998Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T00:46:25.6361113Z               "line": 287
2026-06-22T00:46:25.6361215Z             },
2026-06-22T00:46:25.6361315Z             {
2026-06-22T00:46:25.6361458Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T00:46:25.6361575Z               "line": 301
2026-06-22T00:46:25.6361681Z             },
2026-06-22T00:46:25.6361829Z             {
2026-06-22T00:46:25.6362010Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T00:46:25.6362162Z               "line": 326
2026-06-22T00:46:25.6362305Z             },
2026-06-22T00:46:25.6362448Z             {
2026-06-22T00:46:25.6362653Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.6362806Z               "line": 239
2026-06-22T00:46:25.6362944Z             },
2026-06-22T00:46:25.6363077Z             {
2026-06-22T00:46:25.6363283Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.6363434Z               "line": 95
2026-06-22T00:46:25.6363574Z             },
2026-06-22T00:46:25.6363712Z             {
2026-06-22T00:46:25.6363891Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6364052Z               "line": 2225
2026-06-22T00:46:25.6364180Z             },
2026-06-22T00:46:25.6364319Z             {
2026-06-22T00:46:25.6364499Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6364648Z               "line": 2274
2026-06-22T00:46:25.6364790Z             },
2026-06-22T00:46:25.6364930Z             {
2026-06-22T00:46:25.6365114Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6365410Z               "line": 2353
2026-06-22T00:46:25.6365564Z             },
2026-06-22T00:46:25.6365716Z             {
2026-06-22T00:46:25.6366006Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6366165Z               "line": 2392
2026-06-22T00:46:25.6366297Z             }
2026-06-22T00:46:25.6366441Z           ]
2026-06-22T00:46:25.6366579Z         },
2026-06-22T00:46:25.6366715Z         "int": {
2026-06-22T00:46:25.6366864Z           "complete": true,
2026-06-22T00:46:25.6367007Z           "evidence": [
2026-06-22T00:46:25.6367145Z             {
2026-06-22T00:46:25.6367350Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T00:46:25.6367494Z               "line": 810
2026-06-22T00:46:25.6367631Z             },
2026-06-22T00:46:25.6367770Z             {
2026-06-22T00:46:25.6367979Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T00:46:25.6368138Z               "line": 1345
2026-06-22T00:46:25.6368280Z             }
2026-06-22T00:46:25.6368420Z           ]
2026-06-22T00:46:25.6368566Z         },
2026-06-22T00:46:25.6368695Z         "unit": {
2026-06-22T00:46:25.6368856Z           "complete": true,
2026-06-22T00:46:25.6369103Z           "evidence": [
2026-06-22T00:46:25.6369555Z             {
2026-06-22T00:46:25.6369817Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T00:46:25.6369950Z               "line": 1022
2026-06-22T00:46:25.6370080Z             },
2026-06-22T00:46:25.6370203Z             {
2026-06-22T00:46:25.6370385Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T00:46:25.6370508Z               "line": 1090
2026-06-22T00:46:25.6370632Z             },
2026-06-22T00:46:25.6370761Z             {
2026-06-22T00:46:25.6370918Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6371052Z               "line": 8210
2026-06-22T00:46:25.6371176Z             },
2026-06-22T00:46:25.6371301Z             {
2026-06-22T00:46:25.6371456Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6371591Z               "line": 8265
2026-06-22T00:46:25.6371715Z             }
2026-06-22T00:46:25.6371828Z           ]
2026-06-22T00:46:25.6371952Z         }
2026-06-22T00:46:25.6372074Z       }
2026-06-22T00:46:25.6372197Z     },
2026-06-22T00:46:25.6372313Z     {
2026-06-22T00:46:25.6372440Z       "id": "REQ-PAIR-1",
2026-06-22T00:46:25.6372608Z       "title": "TOTP-seeded SPAKE2 pairing",
2026-06-22T00:46:25.6372741Z       "requiredStages": [
2026-06-22T00:46:25.6372870Z         "impl",
2026-06-22T00:46:25.6372989Z         "unit",
2026-06-22T00:46:25.6373112Z         "int"
2026-06-22T00:46:25.6373238Z       ],
2026-06-22T00:46:25.6373361Z       "stages": {
2026-06-22T00:46:25.6373489Z         "doc": {
2026-06-22T00:46:25.6373624Z           "complete": false,
2026-06-22T00:46:25.6373756Z           "evidence": []
2026-06-22T00:46:25.6373877Z         },
2026-06-22T00:46:25.6373999Z         "impl": {
2026-06-22T00:46:25.6374134Z           "complete": true,
2026-06-22T00:46:25.6374263Z           "evidence": [
2026-06-22T00:46:25.6374385Z             {
2026-06-22T00:46:25.6374585Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T00:46:25.6374721Z               "line": 27
2026-06-22T00:46:25.6374841Z             },
2026-06-22T00:46:25.6374965Z             {
2026-06-22T00:46:25.6375156Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T00:46:25.6375284Z               "line": 88
2026-06-22T00:46:25.6375412Z             },
2026-06-22T00:46:25.6375523Z             {
2026-06-22T00:46:25.6375703Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T00:46:25.6375809Z               "line": 110
2026-06-22T00:46:25.6375918Z             },
2026-06-22T00:46:25.6376018Z             {
2026-06-22T00:46:25.6376176Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T00:46:25.6376294Z               "line": 153
2026-06-22T00:46:25.6376396Z             },
2026-06-22T00:46:25.6376509Z             {
2026-06-22T00:46:25.6376910Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T00:46:25.6377021Z               "line": 182
2026-06-22T00:46:25.6377214Z             },
2026-06-22T00:46:25.6377304Z             {
2026-06-22T00:46:25.6377473Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T00:46:25.6377581Z               "line": 29
2026-06-22T00:46:25.6377681Z             },
2026-06-22T00:46:25.6377782Z             {
2026-06-22T00:46:25.6377957Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T00:46:25.6378068Z               "line": 31
2026-06-22T00:46:25.6378173Z             },
2026-06-22T00:46:25.6378282Z             {
2026-06-22T00:46:25.6378435Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T00:46:25.6378549Z               "line": 44
2026-06-22T00:46:25.6378655Z             },
2026-06-22T00:46:25.6378750Z             {
2026-06-22T00:46:25.6378897Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T00:46:25.6379102Z               "line": 171
2026-06-22T00:46:25.6379212Z             },
2026-06-22T00:46:25.6379314Z             {
2026-06-22T00:46:25.6379469Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T00:46:25.6379573Z               "line": 376
2026-06-22T00:46:25.6379678Z             }
2026-06-22T00:46:25.6379786Z           ]
2026-06-22T00:46:25.6379885Z         },
2026-06-22T00:46:25.6379996Z         "int": {
2026-06-22T00:46:25.6380100Z           "complete": true,
2026-06-22T00:46:25.6380205Z           "evidence": [
2026-06-22T00:46:25.6380311Z             {
2026-06-22T00:46:25.6380463Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T00:46:25.6380578Z               "line": 645
2026-06-22T00:46:25.6384785Z             },
2026-06-22T00:46:25.6384931Z             {
2026-06-22T00:46:25.6385088Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T00:46:25.6385205Z               "line": 887
2026-06-22T00:46:25.6385310Z             }
2026-06-22T00:46:25.6385425Z           ]
2026-06-22T00:46:25.6385525Z         },
2026-06-22T00:46:25.6385629Z         "unit": {
2026-06-22T00:46:25.6385754Z           "complete": true,
2026-06-22T00:46:25.6385863Z           "evidence": [
2026-06-22T00:46:25.6385972Z             {
2026-06-22T00:46:25.6386140Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T00:46:25.6386254Z               "line": 236
2026-06-22T00:46:25.6386355Z             },
2026-06-22T00:46:25.6386454Z             {
2026-06-22T00:46:25.6386616Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T00:46:25.6386718Z               "line": 349
2026-06-22T00:46:25.6386822Z             },
2026-06-22T00:46:25.6386926Z             {
2026-06-22T00:46:25.6387079Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T00:46:25.6387183Z               "line": 194
2026-06-22T00:46:25.6387281Z             },
2026-06-22T00:46:25.6387385Z             {
2026-06-22T00:46:25.6387532Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T00:46:25.6387657Z               "line": 216
2026-06-22T00:46:25.6387765Z             },
2026-06-22T00:46:25.6387869Z             {
2026-06-22T00:46:25.6388013Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T00:46:25.6388117Z               "line": 230
2026-06-22T00:46:25.6388237Z             },
2026-06-22T00:46:25.6388337Z             {
2026-06-22T00:46:25.6388503Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T00:46:25.6388614Z               "line": 242
2026-06-22T00:46:25.6388714Z             },
2026-06-22T00:46:25.6388813Z             {
2026-06-22T00:46:25.6389038Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T00:46:25.6389152Z               "line": 256
2026-06-22T00:46:25.6389258Z             },
2026-06-22T00:46:25.6389362Z             {
2026-06-22T00:46:25.6389515Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T00:46:25.6389615Z               "line": 270
2026-06-22T00:46:25.6389864Z             },
2026-06-22T00:46:25.6389967Z             {
2026-06-22T00:46:25.6390210Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T00:46:25.6390317Z               "line": 277
2026-06-22T00:46:25.6390421Z             },
2026-06-22T00:46:25.6390527Z             {
2026-06-22T00:46:25.6390675Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T00:46:25.6390784Z               "line": 295
2026-06-22T00:46:25.6390880Z             },
2026-06-22T00:46:25.6390989Z             {
2026-06-22T00:46:25.6391143Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T00:46:25.6391252Z               "line": 968
2026-06-22T00:46:25.6391356Z             },
2026-06-22T00:46:25.6391458Z             {
2026-06-22T00:46:25.6391614Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T00:46:25.6391724Z               "line": 1051
2026-06-22T00:46:25.6391824Z             },
2026-06-22T00:46:25.6391948Z             {
2026-06-22T00:46:25.6392097Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T00:46:25.6392215Z               "line": 1121
2026-06-22T00:46:25.6392320Z             },
2026-06-22T00:46:25.6392426Z             {
2026-06-22T00:46:25.6392577Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T00:46:25.6392683Z               "line": 1182
2026-06-22T00:46:25.6392788Z             },
2026-06-22T00:46:25.6392892Z             {
2026-06-22T00:46:25.6393038Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T00:46:25.6393147Z               "line": 1238
2026-06-22T00:46:25.6393260Z             },
2026-06-22T00:46:25.6393356Z             {
2026-06-22T00:46:25.6393518Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T00:46:25.6393632Z               "line": 1457
2026-06-22T00:46:25.6393728Z             }
2026-06-22T00:46:25.6393838Z           ]
2026-06-22T00:46:25.6393937Z         }
2026-06-22T00:46:25.6394043Z       }
2026-06-22T00:46:25.6394138Z     },
2026-06-22T00:46:25.6394237Z     {
2026-06-22T00:46:25.6394353Z       "id": "REQ-PAIR-2",
2026-06-22T00:46:25.6394515Z       "title": "Local trust store with TOFU + warn-on-change",
2026-06-22T00:46:25.6394639Z       "requiredStages": [],
2026-06-22T00:46:25.6394739Z       "stages": {
2026-06-22T00:46:25.6394844Z         "doc": {
2026-06-22T00:46:25.6394959Z           "complete": false,
2026-06-22T00:46:25.6395068Z           "evidence": []
2026-06-22T00:46:25.6395173Z         },
2026-06-22T00:46:25.6395269Z         "impl": {
2026-06-22T00:46:25.6395383Z           "complete": false,
2026-06-22T00:46:25.6395496Z           "evidence": []
2026-06-22T00:46:25.6395596Z         },
2026-06-22T00:46:25.6395700Z         "int": {
2026-06-22T00:46:25.6395817Z           "complete": false,
2026-06-22T00:46:25.6395928Z           "evidence": []
2026-06-22T00:46:25.6396023Z         },
2026-06-22T00:46:25.6396132Z         "unit": {
2026-06-22T00:46:25.6396242Z           "complete": false,
2026-06-22T00:46:25.6396361Z           "evidence": []
2026-06-22T00:46:25.6396470Z         }
2026-06-22T00:46:25.6396572Z       }
2026-06-22T00:46:25.6396685Z     },
2026-06-22T00:46:25.6396780Z     {
2026-06-22T00:46:25.6396901Z       "id": "REQ-PAIR-3",
2026-06-22T00:46:25.6397072Z       "title": "Fetch current pairing code from any paired node",
2026-06-22T00:46:25.6397186Z       "requiredStages": [
2026-06-22T00:46:25.6397292Z         "impl",
2026-06-22T00:46:25.6397401Z         "unit"
2026-06-22T00:46:25.6397506Z       ],
2026-06-22T00:46:25.6397611Z       "stages": {
2026-06-22T00:46:25.6397721Z         "doc": {
2026-06-22T00:46:25.6397821Z           "complete": false,
2026-06-22T00:46:25.6397931Z           "evidence": []
2026-06-22T00:46:25.6398040Z         },
2026-06-22T00:46:25.6398146Z         "impl": {
2026-06-22T00:46:25.6398265Z           "complete": true,
2026-06-22T00:46:25.6398368Z           "evidence": [
2026-06-22T00:46:25.6398473Z             {
2026-06-22T00:46:25.6398673Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6398782Z               "line": 3259
2026-06-22T00:46:25.6399016Z             },
2026-06-22T00:46:25.6399122Z             {
2026-06-22T00:46:25.6399250Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6399359Z               "line": 3328
2026-06-22T00:46:25.6399484Z             },
2026-06-22T00:46:25.6399588Z             {
2026-06-22T00:46:25.6399712Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6399819Z               "line": 3709
2026-06-22T00:46:25.6399922Z             },
2026-06-22T00:46:25.6400032Z             {
2026-06-22T00:46:25.6400148Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6400260Z               "line": 4961
2026-06-22T00:46:25.6400361Z             }
2026-06-22T00:46:25.6400467Z           ]
2026-06-22T00:46:25.6400565Z         },
2026-06-22T00:46:25.6400669Z         "int": {
2026-06-22T00:46:25.6400780Z           "complete": false,
2026-06-22T00:46:25.6400887Z           "evidence": []
2026-06-22T00:46:25.6400991Z         },
2026-06-22T00:46:25.6401097Z         "unit": {
2026-06-22T00:46:25.6401206Z           "complete": true,
2026-06-22T00:46:25.6401315Z           "evidence": [
2026-06-22T00:46:25.6401421Z             {
2026-06-22T00:46:25.6401545Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6401649Z               "line": 9964
2026-06-22T00:46:25.6401760Z             },
2026-06-22T00:46:25.6401854Z             {
2026-06-22T00:46:25.6401984Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6402088Z               "line": 10179
2026-06-22T00:46:25.6402198Z             },
2026-06-22T00:46:25.6402298Z             {
2026-06-22T00:46:25.6402417Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6402532Z               "line": 10838
2026-06-22T00:46:25.6402633Z             },
2026-06-22T00:46:25.6402742Z             {
2026-06-22T00:46:25.6402861Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6402981Z               "line": 10857
2026-06-22T00:46:25.6403094Z             },
2026-06-22T00:46:25.6403195Z             {
2026-06-22T00:46:25.6403334Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6403437Z               "line": 10881
2026-06-22T00:46:25.6403546Z             },
2026-06-22T00:46:25.6403652Z             {
2026-06-22T00:46:25.6403778Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6403882Z               "line": 10900
2026-06-22T00:46:25.6403988Z             },
2026-06-22T00:46:25.6404088Z             {
2026-06-22T00:46:25.6404211Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6404327Z               "line": 10913
2026-06-22T00:46:25.6404431Z             },
2026-06-22T00:46:25.6404531Z             {
2026-06-22T00:46:25.6404660Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6404764Z               "line": 10922
2026-06-22T00:46:25.6404874Z             }
2026-06-22T00:46:25.6404970Z           ]
2026-06-22T00:46:25.6405079Z         }
2026-06-22T00:46:25.6405185Z       }
2026-06-22T00:46:25.6405290Z     },
2026-06-22T00:46:25.6405389Z     {
2026-06-22T00:46:25.6405504Z       "id": "REQ-PAIR-4",
2026-06-22T00:46:25.6405652Z       "title": "Subnet naming on first pairing",
2026-06-22T00:46:25.6405752Z       "requiredStages": [
2026-06-22T00:46:25.6405858Z         "impl",
2026-06-22T00:46:25.6405962Z         "unit"
2026-06-22T00:46:25.6406065Z       ],
2026-06-22T00:46:25.6406175Z       "stages": {
2026-06-22T00:46:25.6406279Z         "doc": {
2026-06-22T00:46:25.6406391Z           "complete": false,
2026-06-22T00:46:25.6406502Z           "evidence": []
2026-06-22T00:46:25.6406603Z         },
2026-06-22T00:46:25.6406702Z         "impl": {
2026-06-22T00:46:25.6406817Z           "complete": true,
2026-06-22T00:46:25.6406926Z           "evidence": [
2026-06-22T00:46:25.6407026Z             {
2026-06-22T00:46:25.6407175Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T00:46:25.6407284Z               "line": 174
2026-06-22T00:46:25.6407489Z             }
2026-06-22T00:46:25.6407589Z           ]
2026-06-22T00:46:25.6407689Z         },
2026-06-22T00:46:25.6407880Z         "int": {
2026-06-22T00:46:25.6407998Z           "complete": false,
2026-06-22T00:46:25.6408110Z           "evidence": []
2026-06-22T00:46:25.6408209Z         },
2026-06-22T00:46:25.6408313Z         "unit": {
2026-06-22T00:46:25.6408425Z           "complete": true,
2026-06-22T00:46:25.6408533Z           "evidence": [
2026-06-22T00:46:25.6408642Z             {
2026-06-22T00:46:25.6408797Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T00:46:25.6408909Z               "line": 1294
2026-06-22T00:46:25.6409066Z             }
2026-06-22T00:46:25.6409168Z           ]
2026-06-22T00:46:25.6409266Z         }
2026-06-22T00:46:25.6409372Z       }
2026-06-22T00:46:25.6409476Z     },
2026-06-22T00:46:25.6409571Z     {
2026-06-22T00:46:25.6409691Z       "id": "REQ-PAIR-5",
2026-06-22T00:46:25.6410020Z       "title": "Multi-subnet pairing: subnet-name discovery input, create-new-names-up-front, rendezvous-token hashing",
2026-06-22T00:46:25.6410148Z       "requiredStages": [
2026-06-22T00:46:25.6410258Z         "impl",
2026-06-22T00:46:25.6410369Z         "unit",
2026-06-22T00:46:25.6410468Z         "int"
2026-06-22T00:46:25.6410568Z       ],
2026-06-22T00:46:25.6410674Z       "stages": {
2026-06-22T00:46:25.6410778Z         "doc": {
2026-06-22T00:46:25.6410897Z           "complete": false,
2026-06-22T00:46:25.6411003Z           "evidence": []
2026-06-22T00:46:25.6411102Z         },
2026-06-22T00:46:25.6411215Z         "impl": {
2026-06-22T00:46:25.6411325Z           "complete": true,
2026-06-22T00:46:25.6411433Z           "evidence": [
2026-06-22T00:46:25.6411537Z             {
2026-06-22T00:46:25.6411700Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T00:46:25.6411800Z               "line": 44
2026-06-22T00:46:25.6411900Z             },
2026-06-22T00:46:25.6412005Z             {
2026-06-22T00:46:25.6412147Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T00:46:25.6412258Z               "line": 96
2026-06-22T00:46:25.6412363Z             },
2026-06-22T00:46:25.6412467Z             {
2026-06-22T00:46:25.6412621Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T00:46:25.6412734Z               "line": 107
2026-06-22T00:46:25.6412839Z             },
2026-06-22T00:46:25.6412940Z             {
2026-06-22T00:46:25.6413087Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T00:46:25.6413198Z               "line": 124
2026-06-22T00:46:25.6413297Z             },
2026-06-22T00:46:25.6413407Z             {
2026-06-22T00:46:25.6413536Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T00:46:25.6413645Z               "line": 155
2026-06-22T00:46:25.6413750Z             },
2026-06-22T00:46:25.6413851Z             {
2026-06-22T00:46:25.6413992Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T00:46:25.6414101Z               "line": 195
2026-06-22T00:46:25.6414216Z             },
2026-06-22T00:46:25.6414319Z             {
2026-06-22T00:46:25.6414476Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T00:46:25.6414582Z               "line": 251
2026-06-22T00:46:25.6414695Z             },
2026-06-22T00:46:25.6414796Z             {
2026-06-22T00:46:25.6414958Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T00:46:25.6415071Z               "line": 33
2026-06-22T00:46:25.6415173Z             },
2026-06-22T00:46:25.6415273Z             {
2026-06-22T00:46:25.6415439Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T00:46:25.6415544Z               "line": 45
2026-06-22T00:46:25.6415644Z             },
2026-06-22T00:46:25.6415745Z             {
2026-06-22T00:46:25.6415907Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T00:46:25.6416011Z               "line": 59
2026-06-22T00:46:25.6416118Z             },
2026-06-22T00:46:25.6416350Z             {
2026-06-22T00:46:25.6416503Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T00:46:25.6416706Z               "line": 376
2026-06-22T00:46:25.6416816Z             }
2026-06-22T00:46:25.6416919Z           ]
2026-06-22T00:46:25.6417023Z         },
2026-06-22T00:46:25.6417130Z         "int": {
2026-06-22T00:46:25.6417229Z           "complete": true,
2026-06-22T00:46:25.6417334Z           "evidence": [
2026-06-22T00:46:25.6417435Z             {
2026-06-22T00:46:25.6417582Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T00:46:25.6417697Z               "line": 887
2026-06-22T00:46:25.6417792Z             },
2026-06-22T00:46:25.6417896Z             {
2026-06-22T00:46:25.6418045Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T00:46:25.6418149Z               "line": 342
2026-06-22T00:46:25.6418253Z             }
2026-06-22T00:46:25.6418355Z           ]
2026-06-22T00:46:25.6418469Z         },
2026-06-22T00:46:25.6418578Z         "unit": {
2026-06-22T00:46:25.6418689Z           "complete": true,
2026-06-22T00:46:25.6418783Z           "evidence": [
2026-06-22T00:46:25.6418893Z             {
2026-06-22T00:46:25.6419102Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T00:46:25.6419212Z               "line": 293
2026-06-22T00:46:25.6419319Z             },
2026-06-22T00:46:25.6419408Z             {
2026-06-22T00:46:25.6419564Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T00:46:25.6419670Z               "line": 304
2026-06-22T00:46:25.6419779Z             },
2026-06-22T00:46:25.6419879Z             {
2026-06-22T00:46:25.6420027Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T00:46:25.6420141Z               "line": 406
2026-06-22T00:46:25.6420242Z             },
2026-06-22T00:46:25.6420351Z             {
2026-06-22T00:46:25.6420508Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T00:46:25.6420619Z               "line": 72
2026-06-22T00:46:25.6420728Z             },
2026-06-22T00:46:25.6420832Z             {
2026-06-22T00:46:25.6421004Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T00:46:25.6421109Z               "line": 82
2026-06-22T00:46:25.6421215Z             },
2026-06-22T00:46:25.6421319Z             {
2026-06-22T00:46:25.6421477Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T00:46:25.6421583Z               "line": 100
2026-06-22T00:46:25.6421690Z             },
2026-06-22T00:46:25.6421794Z             {
2026-06-22T00:46:25.6421947Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T00:46:25.6422059Z               "line": 110
2026-06-22T00:46:25.6422165Z             },
2026-06-22T00:46:25.6422265Z             {
2026-06-22T00:46:25.6422431Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T00:46:25.6422537Z               "line": 125
2026-06-22T00:46:25.6422646Z             },
2026-06-22T00:46:25.6422755Z             {
2026-06-22T00:46:25.6422908Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T00:46:25.6423032Z               "line": 1044
2026-06-22T00:46:25.6423128Z             },
2026-06-22T00:46:25.6423237Z             {
2026-06-22T00:46:25.6423380Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T00:46:25.6423500Z               "line": 1110
2026-06-22T00:46:25.6423600Z             },
2026-06-22T00:46:25.6423704Z             {
2026-06-22T00:46:25.6423858Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T00:46:25.6423962Z               "line": 1357
2026-06-22T00:46:25.6424068Z             }
2026-06-22T00:46:25.6424159Z           ]
2026-06-22T00:46:25.6424267Z         }
2026-06-22T00:46:25.6424368Z       }
2026-06-22T00:46:25.6424478Z     },
2026-06-22T00:46:25.6424586Z     {
2026-06-22T00:46:25.6424695Z       "id": "REQ-PAIR-6",
2026-06-22T00:46:25.6424988Z       "title": "Elevation-gated per-subnet code fetch (UAC/root or elevated agent; else authenticator app)",
2026-06-22T00:46:25.6425208Z       "requiredStages": [
2026-06-22T00:46:25.6425405Z         "impl",
2026-06-22T00:46:25.6425504Z         "unit"
2026-06-22T00:46:25.6425599Z       ],
2026-06-22T00:46:25.6425705Z       "stages": {
2026-06-22T00:46:25.6425809Z         "doc": {
2026-06-22T00:46:25.6425932Z           "complete": false,
2026-06-22T00:46:25.6426039Z           "evidence": []
2026-06-22T00:46:25.6426147Z         },
2026-06-22T00:46:25.6426252Z         "impl": {
2026-06-22T00:46:25.6426363Z           "complete": true,
2026-06-22T00:46:25.6426471Z           "evidence": [
2026-06-22T00:46:25.6426577Z             {
2026-06-22T00:46:25.6426706Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6426805Z               "line": 3328
2026-06-22T00:46:25.6426915Z             },
2026-06-22T00:46:25.6427017Z             {
2026-06-22T00:46:25.6427148Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6427262Z               "line": 3709
2026-06-22T00:46:25.6427366Z             },
2026-06-22T00:46:25.6427479Z             {
2026-06-22T00:46:25.6427617Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T00:46:25.6427728Z               "line": 18
2026-06-22T00:46:25.6427827Z             },
2026-06-22T00:46:25.6427932Z             {
2026-06-22T00:46:25.6428071Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T00:46:25.6428174Z               "line": 49
2026-06-22T00:46:25.6428281Z             },
2026-06-22T00:46:25.6428385Z             {
2026-06-22T00:46:25.6428523Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T00:46:25.6428629Z               "line": 318
2026-06-22T00:46:25.6428733Z             }
2026-06-22T00:46:25.6428843Z           ]
2026-06-22T00:46:25.6429005Z         },
2026-06-22T00:46:25.6429119Z         "int": {
2026-06-22T00:46:25.6429235Z           "complete": false,
2026-06-22T00:46:25.6429362Z           "evidence": []
2026-06-22T00:46:25.6429472Z         },
2026-06-22T00:46:25.6429583Z         "unit": {
2026-06-22T00:46:25.6429705Z           "complete": true,
2026-06-22T00:46:25.6429816Z           "evidence": [
2026-06-22T00:46:25.6429926Z             {
2026-06-22T00:46:25.6430057Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6430172Z               "line": 10935
2026-06-22T00:46:25.6430273Z             },
2026-06-22T00:46:25.6430382Z             {
2026-06-22T00:46:25.6430506Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6430616Z               "line": 10952
2026-06-22T00:46:25.6430724Z             },
2026-06-22T00:46:25.6430826Z             {
2026-06-22T00:46:25.6430960Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T00:46:25.6431063Z               "line": 383
2026-06-22T00:46:25.6431179Z             },
2026-06-22T00:46:25.6431283Z             {
2026-06-22T00:46:25.6431412Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T00:46:25.6431517Z               "line": 392
2026-06-22T00:46:25.6431622Z             }
2026-06-22T00:46:25.6431727Z           ]
2026-06-22T00:46:25.6431837Z         }
2026-06-22T00:46:25.6431945Z       }
2026-06-22T00:46:25.6432056Z     },
2026-06-22T00:46:25.6432152Z     {
2026-06-22T00:46:25.6432264Z       "id": "REQ-PAIR-7",
2026-06-22T00:46:25.6432455Z       "title": "Subnet icon (inline image metadata, GUI-only consumer)",
2026-06-22T00:46:25.6432577Z       "requiredStages": [],
2026-06-22T00:46:25.6432681Z       "stages": {
2026-06-22T00:46:25.6432797Z         "doc": {
2026-06-22T00:46:25.6432910Z           "complete": false,
2026-06-22T00:46:25.6433005Z           "evidence": []
2026-06-22T00:46:25.6433112Z         },
2026-06-22T00:46:25.6433216Z         "impl": {
2026-06-22T00:46:25.6433339Z           "complete": false,
2026-06-22T00:46:25.6433445Z           "evidence": []
2026-06-22T00:46:25.6433554Z         },
2026-06-22T00:46:25.6433664Z         "int": {
2026-06-22T00:46:25.6433769Z           "complete": false,
2026-06-22T00:46:25.6433883Z           "evidence": []
2026-06-22T00:46:25.6434098Z         },
2026-06-22T00:46:25.6434203Z         "unit": {
2026-06-22T00:46:25.6434313Z           "complete": false,
2026-06-22T00:46:25.6434522Z           "evidence": []
2026-06-22T00:46:25.6434628Z         }
2026-06-22T00:46:25.6434724Z       }
2026-06-22T00:46:25.6434827Z     },
2026-06-22T00:46:25.6434914Z     {
2026-06-22T00:46:25.6435024Z       "id": "REQ-PAIR-8",
2026-06-22T00:46:25.6436478Z       "title": "NTP TOTP offset: the pairing ceremony queries NTP at ceremony time (both sides) and applies the derived offset to the TOTP calculation in-process only; system-clock fallback when NTP is unreachable (offline LAN pairing unaffected — NTP failure never blocks a pairing that succeeds today); never sets the OS clock; no background sync loop (M8 decision 18; field trigger: enlyzeam clock >1 min off exceeds the ±1 window)",
2026-06-22T00:46:25.6436608Z       "requiredStages": [
2026-06-22T00:46:25.6436712Z         "impl",
2026-06-22T00:46:25.6436817Z         "unit"
2026-06-22T00:46:25.6436933Z       ],
2026-06-22T00:46:25.6437041Z       "stages": {
2026-06-22T00:46:25.6437151Z         "doc": {
2026-06-22T00:46:25.6437276Z           "complete": false,
2026-06-22T00:46:25.6437384Z           "evidence": []
2026-06-22T00:46:25.6437480Z         },
2026-06-22T00:46:25.6437582Z         "impl": {
2026-06-22T00:46:25.6437694Z           "complete": true,
2026-06-22T00:46:25.6437798Z           "evidence": [
2026-06-22T00:46:25.6437903Z             {
2026-06-22T00:46:25.6438058Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T00:46:25.6438168Z               "line": 577
2026-06-22T00:46:25.6438264Z             },
2026-06-22T00:46:25.6438363Z             {
2026-06-22T00:46:25.6438517Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T00:46:25.6438621Z               "line": 22
2026-06-22T00:46:25.6438730Z             },
2026-06-22T00:46:25.6438832Z             {
2026-06-22T00:46:25.6439050Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T00:46:25.6439175Z               "line": 76
2026-06-22T00:46:25.6439269Z             },
2026-06-22T00:46:25.6439383Z             {
2026-06-22T00:46:25.6439551Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T00:46:25.6439655Z               "line": 127
2026-06-22T00:46:25.6439766Z             }
2026-06-22T00:46:25.6439870Z           ]
2026-06-22T00:46:25.6439980Z         },
2026-06-22T00:46:25.6440081Z         "int": {
2026-06-22T00:46:25.6440190Z           "complete": false,
2026-06-22T00:46:25.6440295Z           "evidence": []
2026-06-22T00:46:25.6440400Z         },
2026-06-22T00:46:25.6440509Z         "unit": {
2026-06-22T00:46:25.6440618Z           "complete": true,
2026-06-22T00:46:25.6440732Z           "evidence": [
2026-06-22T00:46:25.6440824Z             {
2026-06-22T00:46:25.6440979Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T00:46:25.6441086Z               "line": 183
2026-06-22T00:46:25.6441186Z             },
2026-06-22T00:46:25.6441294Z             {
2026-06-22T00:46:25.6441453Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T00:46:25.6441576Z               "line": 195
2026-06-22T00:46:25.6441671Z             },
2026-06-22T00:46:25.6441791Z             {
2026-06-22T00:46:25.6441924Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T00:46:25.6442021Z               "line": 211
2026-06-22T00:46:25.6442125Z             },
2026-06-22T00:46:25.6442225Z             {
2026-06-22T00:46:25.6442373Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T00:46:25.6442482Z               "line": 227
2026-06-22T00:46:25.6442592Z             }
2026-06-22T00:46:25.6442698Z           ]
2026-06-22T00:46:25.6442801Z         }
2026-06-22T00:46:25.6442915Z       }
2026-06-22T00:46:25.6443010Z     },
2026-06-22T00:46:25.6443114Z     {
2026-06-22T00:46:25.6443227Z       "id": "REQ-PICKER-1",
2026-06-22T00:46:25.6446986Z       "title": "The picker renders a FOUR-state endpoint status (extending the W2 online/offline duality): the list-item square AND a color-coded STATUS line at the top of the pick-existing right-side details both show — gray OFFLINE; green ONLINE (online + PTY-controllable spt-hosted, not controlled); amber 'ONLINE - HARNESS ONLY' (online but NOT broker-PTY-controllable = harness-hosted, no broker PTY seat — today mis-shows green); blue 'ONLINE + CONTROLLED' (online + driven_by.is_some()). Derived on EndpointRow from {offline | controllable | driven_by} with precedence offline→gray, else driven_by→blue, else !controllable→amber, else green (driven_by outranks harness-only; mutually exclusive in practice — a harness-only endpoint has no broker PTY to control). The controllable discriminator is a NEW InfoJson.controllable: Option<bool> (serde-default, N-1-safe), stamped at the establish seam — cmd_listen (harness-hosted relay, no broker PTY) → Some(false); cmd_bind live_agent (spt-hosted broker PTY) → Some(true); absent → not-controllable (amber) default (harness-hosted is the common mis-reported case; one bind self-corrects). Store-projection-only (no live daemon query — doyle ruling). (v0.10.0)",
2026-06-22T00:46:25.6447392Z       "requiredStages": [
2026-06-22T00:46:25.6447502Z         "impl",
2026-06-22T00:46:25.6447610Z         "unit"
2026-06-22T00:46:25.6447716Z       ],
2026-06-22T00:46:25.6447822Z       "stages": {
2026-06-22T00:46:25.6447934Z         "doc": {
2026-06-22T00:46:25.6448040Z           "complete": false,
2026-06-22T00:46:25.6448160Z           "evidence": []
2026-06-22T00:46:25.6448273Z         },
2026-06-22T00:46:25.6448377Z         "impl": {
2026-06-22T00:46:25.6448501Z           "complete": true,
2026-06-22T00:46:25.6448609Z           "evidence": [
2026-06-22T00:46:25.6448723Z             {
2026-06-22T00:46:25.6448872Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.6449062Z               "line": 248
2026-06-22T00:46:25.6449167Z             },
2026-06-22T00:46:25.6449271Z             {
2026-06-22T00:46:25.6449425Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T00:46:25.6449539Z               "line": 263
2026-06-22T00:46:25.6449643Z             }
2026-06-22T00:46:25.6449754Z           ]
2026-06-22T00:46:25.6449858Z         },
2026-06-22T00:46:25.6449963Z         "int": {
2026-06-22T00:46:25.6450083Z           "complete": false,
2026-06-22T00:46:25.6450192Z           "evidence": []
2026-06-22T00:46:25.6450292Z         },
2026-06-22T00:46:25.6450398Z         "unit": {
2026-06-22T00:46:25.6450507Z           "complete": true,
2026-06-22T00:46:25.6450627Z           "evidence": [
2026-06-22T00:46:25.6450731Z             {
2026-06-22T00:46:25.6450874Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T00:46:25.6450985Z               "line": 476
2026-06-22T00:46:25.6451088Z             },
2026-06-22T00:46:25.6451197Z             {
2026-06-22T00:46:25.6451336Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.6451450Z               "line": 753
2026-06-22T00:46:25.6451554Z             },
2026-06-22T00:46:25.6451651Z             {
2026-06-22T00:46:25.6451797Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T00:46:25.6451903Z               "line": 886
2026-06-22T00:46:25.6452013Z             },
2026-06-22T00:46:25.6452117Z             {
2026-06-22T00:46:25.6452256Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T00:46:25.6452375Z               "line": 455
2026-06-22T00:46:25.6452470Z             }
2026-06-22T00:46:25.6452576Z           ]
2026-06-22T00:46:25.6452671Z         }
2026-06-22T00:46:25.6452761Z       }
2026-06-22T00:46:25.6452876Z     },
2026-06-22T00:46:25.6452976Z     {
2026-06-22T00:46:25.6453090Z       "id": "REQ-PICKER-2",
2026-06-22T00:46:25.6455050Z       "title": "The picker's project-history loader reads the git-backed context store, not the bare working tree: data.rs project_history_for enumerates an endpoint's projects via the BranchStore branch set (the context store keeps per-project context in git branches — contextstore::project_branch(project_id), checked out to projects/<project>/<id>/ only on-demand) instead of raw std::fs::read_dir over the empty working tree (which returned empty for ALL rows incl wall-a — the operator bug). Ordered newest→oldest by branch commit recency; degrades to empty (informational pane), never fails. (v0.10.0)",
2026-06-22T00:46:25.6455399Z       "requiredStages": [
2026-06-22T00:46:25.6455505Z         "impl",
2026-06-22T00:46:25.6455608Z         "unit"
2026-06-22T00:46:25.6455719Z       ],
2026-06-22T00:46:25.6455824Z       "stages": {
2026-06-22T00:46:25.6455937Z         "doc": {
2026-06-22T00:46:25.6456058Z           "complete": false,
2026-06-22T00:46:25.6456168Z           "evidence": []
2026-06-22T00:46:25.6456280Z         },
2026-06-22T00:46:25.6456390Z         "impl": {
2026-06-22T00:46:25.6456504Z           "complete": true,
2026-06-22T00:46:25.6456611Z           "evidence": [
2026-06-22T00:46:25.6456722Z             {
2026-06-22T00:46:25.6456889Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T00:46:25.6457012Z               "line": 183
2026-06-22T00:46:25.6457118Z             },
2026-06-22T00:46:25.6457218Z             {
2026-06-22T00:46:25.6457366Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T00:46:25.6457475Z               "line": 296
2026-06-22T00:46:25.6457584Z             }
2026-06-22T00:46:25.6457695Z           ]
2026-06-22T00:46:25.6457799Z         },
2026-06-22T00:46:25.6457908Z         "int": {
2026-06-22T00:46:25.6458015Z           "complete": false,
2026-06-22T00:46:25.6458128Z           "evidence": []
2026-06-22T00:46:25.6458223Z         },
2026-06-22T00:46:25.6458320Z         "unit": {
2026-06-22T00:46:25.6458434Z           "complete": true,
2026-06-22T00:46:25.6458543Z           "evidence": [
2026-06-22T00:46:25.6458654Z             {
2026-06-22T00:46:25.6458804Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T00:46:25.6458913Z               "line": 655
2026-06-22T00:46:25.6459094Z             }
2026-06-22T00:46:25.6459188Z           ]
2026-06-22T00:46:25.6459302Z         }
2026-06-22T00:46:25.6459399Z       }
2026-06-22T00:46:25.6459502Z     },
2026-06-22T00:46:25.6459608Z     {
2026-06-22T00:46:25.6459732Z       "id": "REQ-PICKER-3",
2026-06-22T00:46:25.6462186Z       "title": "A self-owned subnet row reconciles its status to the LIVE roster: a Subnet-category row whose endpoint_id overlaps a local (is_local) roster id is self-owned (this node hosts it), so its status square is OVERRIDDEN with the live roster status — the WAN registry snapshot (wansend::load_snapshots) is a periodically-advertised, independently-stale projection, while the local roster (p.alive) is ground truth for an endpoint this node hosts. One status square per endpoint (CONTEXT.md:348-350 — nothing licenses opposite squares for one endpoint across its Local vs Subnet listings). A reconcile pass in data.rs after the local_rows + subnet_rows gather; BOTH category listings are preserved (Local + Subnet are legitimately distinct views — you are in your own subnet), only the STATUS is unified. (v0.10.0)",
2026-06-22T00:46:25.6462311Z       "requiredStages": [
2026-06-22T00:46:25.6462415Z         "impl",
2026-06-22T00:46:25.6462526Z         "unit"
2026-06-22T00:46:25.6462630Z       ],
2026-06-22T00:46:25.6462730Z       "stages": {
2026-06-22T00:46:25.6462831Z         "doc": {
2026-06-22T00:46:25.6462935Z           "complete": false,
2026-06-22T00:46:25.6463044Z           "evidence": []
2026-06-22T00:46:25.6463141Z         },
2026-06-22T00:46:25.6463245Z         "impl": {
2026-06-22T00:46:25.6463354Z           "complete": true,
2026-06-22T00:46:25.6463461Z           "evidence": [
2026-06-22T00:46:25.6463569Z             {
2026-06-22T00:46:25.6463707Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T00:46:25.6463814Z               "line": 124
2026-06-22T00:46:25.6463917Z             }
2026-06-22T00:46:25.6464021Z           ]
2026-06-22T00:46:25.6464121Z         },
2026-06-22T00:46:25.6464224Z         "int": {
2026-06-22T00:46:25.6464328Z           "complete": false,
2026-06-22T00:46:25.6464553Z           "evidence": []
2026-06-22T00:46:25.6464662Z         },
2026-06-22T00:46:25.6464854Z         "unit": {
2026-06-22T00:46:25.6464962Z           "complete": true,
2026-06-22T00:46:25.6465069Z           "evidence": [
2026-06-22T00:46:25.6465178Z             {
2026-06-22T00:46:25.6465310Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T00:46:25.6465416Z               "line": 369
2026-06-22T00:46:25.6465526Z             }
2026-06-22T00:46:25.6465625Z           ]
2026-06-22T00:46:25.6465741Z         }
2026-06-22T00:46:25.6465835Z       }
2026-06-22T00:46:25.6465940Z     },
2026-06-22T00:46:25.6466042Z     {
2026-06-22T00:46:25.6466159Z       "id": "REQ-PICKER-4",
2026-06-22T00:46:25.6468059Z       "title": "The picker's Subnet category renders the canonical node LABEL, not bare key-hex: a subnet row's node renders as 'LABEL (keyprefix…)' (e.g. 'HFENDULEAM (bcead52b…)') per CONTEXT.md:650 + Instance.node_label, NOT the raw node key-hex (SPT_DEV:14efb80cb… — a picker-only regression because resource_projection→ResourceRow drops node_label, so data.rs subnet_rows uses the raw row.node). Thread node_label into the picker subnet path (ResourceRow gains node_label, or subnet_rows looks it up via the registry's node_labels) and REUSE the one canonical render (format!(\"{l} ({}…)\", key_prefix) — cli.rs / wansend.rs), never a re-implementation. (v0.10.0)",
2026-06-22T00:46:25.6468192Z       "requiredStages": [
2026-06-22T00:46:25.6468303Z         "impl",
2026-06-22T00:46:25.6468407Z         "unit"
2026-06-22T00:46:25.6468507Z       ],
2026-06-22T00:46:25.6468613Z       "stages": {
2026-06-22T00:46:25.6468707Z         "doc": {
2026-06-22T00:46:25.6468817Z           "complete": false,
2026-06-22T00:46:25.6468927Z           "evidence": []
2026-06-22T00:46:25.6469103Z         },
2026-06-22T00:46:25.6469205Z         "impl": {
2026-06-22T00:46:25.6469309Z           "complete": true,
2026-06-22T00:46:25.6469417Z           "evidence": [
2026-06-22T00:46:25.6469517Z             {
2026-06-22T00:46:25.6469668Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.6469772Z               "line": 353
2026-06-22T00:46:25.6469886Z             },
2026-06-22T00:46:25.6469983Z             {
2026-06-22T00:46:25.6470115Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T00:46:25.6470221Z               "line": 105
2026-06-22T00:46:25.6470321Z             }
2026-06-22T00:46:25.6470430Z           ]
2026-06-22T00:46:25.6470517Z         },
2026-06-22T00:46:25.6470611Z         "int": {
2026-06-22T00:46:25.6470730Z           "complete": false,
2026-06-22T00:46:25.6470822Z           "evidence": []
2026-06-22T00:46:25.6470930Z         },
2026-06-22T00:46:25.6471035Z         "unit": {
2026-06-22T00:46:25.6471141Z           "complete": true,
2026-06-22T00:46:25.6471245Z           "evidence": [
2026-06-22T00:46:25.6471345Z             {
2026-06-22T00:46:25.6474951Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.6475095Z               "line": 1246
2026-06-22T00:46:25.6475208Z             },
2026-06-22T00:46:25.6475299Z             {
2026-06-22T00:46:25.6475451Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T00:46:25.6475551Z               "line": 427
2026-06-22T00:46:25.6475657Z             }
2026-06-22T00:46:25.6475766Z           ]
2026-06-22T00:46:25.6475875Z         }
2026-06-22T00:46:25.6475972Z       }
2026-06-22T00:46:25.6476072Z     },
2026-06-22T00:46:25.6476176Z     {
2026-06-22T00:46:25.6476287Z       "id": "REQ-PICKER-5",
2026-06-22T00:46:25.6479474Z       "title": "`spt endpoint list` (bare/subnet view) renders an ALIGNED table with canonical node labels: cmd_endpoint_list prints subnet rows with `\\t` TAB separators (cli.rs:~1651-1662) so variable-width endpoint_ids snap fields to different tab-stops → a RAGGED status column (operator screenshot: X/help statuses misaligned vs rt-*/sptc-*/wall-a); and it calls the node renderer with no label → bare key-hex for every row (SAME ResourceRow-drops-node_label root as REQ-PICKER-4). FIX: max-width per-column padding (mirror render_node_rows' pad, pad by char count not byte len — '…' is multibyte) replacing the tabs, and render the node via the shared node_label_display now that ResourceRow carries node_label (REQ-PICKER-4). Extract a pure row-formatter seam so the alignment+label is unit-testable. ALSO: the bare list is the SUBNET view (a just-run LOCAL perch is invisible cross-subnet until the next advertise tick), so emit a `--local` hint line so a freshly-run endpoint isn't perceived as lost. (v0.10.0; operator-flagged + doyle dispatch 2026-06-17)",
2026-06-22T00:46:25.6479850Z       "requiredStages": [
2026-06-22T00:46:25.6479962Z         "impl",
2026-06-22T00:46:25.6480062Z         "unit"
2026-06-22T00:46:25.6480172Z       ],
2026-06-22T00:46:25.6480275Z       "stages": {
2026-06-22T00:46:25.6480384Z         "doc": {
2026-06-22T00:46:25.6480490Z           "complete": false,
2026-06-22T00:46:25.6480585Z           "evidence": []
2026-06-22T00:46:25.6480690Z         },
2026-06-22T00:46:25.6480800Z         "impl": {
2026-06-22T00:46:25.6480909Z           "complete": true,
2026-06-22T00:46:25.6481023Z           "evidence": [
2026-06-22T00:46:25.6481129Z             {
2026-06-22T00:46:25.6481252Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6481368Z               "line": 1802
2026-06-22T00:46:25.6481472Z             }
2026-06-22T00:46:25.6481558Z           ]
2026-06-22T00:46:25.6481662Z         },
2026-06-22T00:46:25.6481754Z         "int": {
2026-06-22T00:46:25.6481854Z           "complete": false,
2026-06-22T00:46:25.6481963Z           "evidence": []
2026-06-22T00:46:25.6482059Z         },
2026-06-22T00:46:25.6482167Z         "unit": {
2026-06-22T00:46:25.6482273Z           "complete": true,
2026-06-22T00:46:25.6482374Z           "evidence": [
2026-06-22T00:46:25.6482473Z             {
2026-06-22T00:46:25.6482602Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6482708Z               "line": 7526
2026-06-22T00:46:25.6482811Z             }
2026-06-22T00:46:25.6482915Z           ]
2026-06-22T00:46:25.6483006Z         }
2026-06-22T00:46:25.6483112Z       }
2026-06-22T00:46:25.6483211Z     },
2026-06-22T00:46:25.6483307Z     {
2026-06-22T00:46:25.6483445Z       "id": "REQ-PICKER-ADAPTER-DESCRIPTION",
2026-06-22T00:46:25.6484823Z       "title": "The Create-new adapter-CHOICE screen of `spt endpoint run`'s picker shows a right-hand Description panel (like the Pick-existing endpoint picker's two-pane) surfacing per-adapter detail: install date, last-updated, adapter TYPE / the endpoint types it hosts, and the adapter description — so the user can see WHAT each adapter is before choosing it (today the selector lists bare names). DEFERRED fast-follow to v0.12.0 (operator 2026-06-18). (post-v0.12.0)",
2026-06-22T00:46:25.6484939Z       "requiredStages": [],
2026-06-22T00:46:25.6485041Z       "stages": {
2026-06-22T00:46:25.6485150Z         "doc": {
2026-06-22T00:46:25.6485256Z           "complete": false,
2026-06-22T00:46:25.6485363Z           "evidence": []
2026-06-22T00:46:25.6485477Z         },
2026-06-22T00:46:25.6485583Z         "impl": {
2026-06-22T00:46:25.6485697Z           "complete": false,
2026-06-22T00:46:25.6485806Z           "evidence": []
2026-06-22T00:46:25.6485907Z         },
2026-06-22T00:46:25.6486016Z         "int": {
2026-06-22T00:46:25.6486120Z           "complete": false,
2026-06-22T00:46:25.6486236Z           "evidence": []
2026-06-22T00:46:25.6486336Z         },
2026-06-22T00:46:25.6486435Z         "unit": {
2026-06-22T00:46:25.6486546Z           "complete": false,
2026-06-22T00:46:25.6486660Z           "evidence": []
2026-06-22T00:46:25.6486765Z         }
2026-06-22T00:46:25.6486866Z       }
2026-06-22T00:46:25.6486970Z     },
2026-06-22T00:46:25.6487070Z     {
2026-06-22T00:46:25.6487190Z       "id": "REQ-PICKER-HISTORY-FRESH",
2026-06-22T00:46:25.6488306Z       "title": "The `spt endpoint run` picker shows project history for FRESH endpoints (operator-raised v0.12.0 real-harness finding). Symptom: a fresh endpoint shows no project history in the picker. ROOT TBD — investigate the project-history loader (v0.10.0 PICKER-2, picker/data.rs) before fixing: distinguish a real loader bug from 'fresh = no history yet' semantics. (v0.12.1)",
2026-06-22T00:46:25.6488602Z       "requiredStages": [
2026-06-22T00:46:25.6488712Z         "impl",
2026-06-22T00:46:25.6488813Z         "unit"
2026-06-22T00:46:25.6488907Z       ],
2026-06-22T00:46:25.6489075Z       "stages": {
2026-06-22T00:46:25.6489170Z         "doc": {
2026-06-22T00:46:25.6489284Z           "complete": false,
2026-06-22T00:46:25.6489395Z           "evidence": []
2026-06-22T00:46:25.6489499Z         },
2026-06-22T00:46:25.6489599Z         "impl": {
2026-06-22T00:46:25.6489705Z           "complete": true,
2026-06-22T00:46:25.6489813Z           "evidence": [
2026-06-22T00:46:25.6489913Z             {
2026-06-22T00:46:25.6490057Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T00:46:25.6490156Z               "line": 275
2026-06-22T00:46:25.6490247Z             }
2026-06-22T00:46:25.6490344Z           ]
2026-06-22T00:46:25.6490448Z         },
2026-06-22T00:46:25.6490551Z         "int": {
2026-06-22T00:46:25.6490666Z           "complete": false,
2026-06-22T00:46:25.6490774Z           "evidence": []
2026-06-22T00:46:25.6490873Z         },
2026-06-22T00:46:25.6490978Z         "unit": {
2026-06-22T00:46:25.6491084Z           "complete": true,
2026-06-22T00:46:25.6491192Z           "evidence": [
2026-06-22T00:46:25.6491283Z             {
2026-06-22T00:46:25.6491422Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T00:46:25.6491535Z               "line": 400
2026-06-22T00:46:25.6491623Z             }
2026-06-22T00:46:25.6491727Z           ]
2026-06-22T00:46:25.6491817Z         }
2026-06-22T00:46:25.6491918Z       }
2026-06-22T00:46:25.6492008Z     },
2026-06-22T00:46:25.6492109Z     {
2026-06-22T00:46:25.6492237Z       "id": "REQ-PICKER-ONLINE-ACTION",
2026-06-22T00:46:25.6493795Z       "title": "The `spt endpoint run` picker shows the correct action for an ALREADY-ONLINE endpoint — Attach, NOT 'Start now' (operator-raised v0.12.0 real-harness finding). Symptom: the picker offers 'Start now' for endpoints that are already online. ROOT TBD — investigate the status→action mapping (v0.10.0 PICKER-1 four-state status, picker/model.rs): is it reading live/online state correctly, or rendering stale/wedged broker state (i.e. partly a symptom of the broker wedge / status=online latch)? Fix so online → Attach. (v0.12.1)",
2026-06-22T00:46:25.6493953Z       "requiredStages": [
2026-06-22T00:46:25.6494090Z         "impl",
2026-06-22T00:46:25.6494254Z         "unit"
2026-06-22T00:46:25.6494363Z       ],
2026-06-22T00:46:25.6494467Z       "stages": {
2026-06-22T00:46:25.6494573Z         "doc": {
2026-06-22T00:46:25.6494673Z           "complete": false,
2026-06-22T00:46:25.6494782Z           "evidence": []
2026-06-22T00:46:25.6494883Z         },
2026-06-22T00:46:25.6494988Z         "impl": {
2026-06-22T00:46:25.6495097Z           "complete": true,
2026-06-22T00:46:25.6495217Z           "evidence": [
2026-06-22T00:46:25.6495316Z             {
2026-06-22T00:46:25.6495446Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T00:46:25.6495569Z               "line": 654
2026-06-22T00:46:25.6495668Z             }
2026-06-22T00:46:25.6495778Z           ]
2026-06-22T00:46:25.6495877Z         },
2026-06-22T00:46:25.6495976Z         "int": {
2026-06-22T00:46:25.6496090Z           "complete": false,
2026-06-22T00:46:25.6496196Z           "evidence": []
2026-06-22T00:46:25.6496295Z         },
2026-06-22T00:46:25.6496395Z         "unit": {
2026-06-22T00:46:25.6496510Z           "complete": true,
2026-06-22T00:46:25.6496609Z           "evidence": [
2026-06-22T00:46:25.6496710Z             {
2026-06-22T00:46:25.6496848Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T00:46:25.6496957Z               "line": 1078
2026-06-22T00:46:25.6497064Z             },
2026-06-22T00:46:25.6497153Z             {
2026-06-22T00:46:25.6497291Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T00:46:25.6497521Z               "line": 1092
2026-06-22T00:46:25.6497611Z             }
2026-06-22T00:46:25.6497806Z           ]
2026-06-22T00:46:25.6497911Z         }
2026-06-22T00:46:25.6498017Z       }
2026-06-22T00:46:25.6498117Z     },
2026-06-22T00:46:25.6498221Z     {
2026-06-22T00:46:25.6498332Z       "id": "REQ-PICKER-UX-V013",
2026-06-22T00:46:25.6500025Z       "title": "`spt endpoint run` picker UX (v0.13.0 operator dogfooding): (1) SKIP the first screen — open directly on 'Pick existing'; `n` jumps to 'Create new'. (2) AUTO-ATTACH after both Start-new AND Resume-from-history (both currently don't attach and show no stdout); add an `h` shortcut to run headless (no attach). (3) 'controlled by' shows the node NAME (node_label_display), not the raw hex. (4) Clean up Start-new output — drop the Rust `pid=Some(142748)` leak and the 'harness binds its perch on startup' internals; user-friendly, not a process log. (v0.13.0)",
2026-06-22T00:46:25.6500144Z       "requiredStages": [],
2026-06-22T00:46:25.6500265Z       "stages": {
2026-06-22T00:46:25.6500359Z         "doc": {
2026-06-22T00:46:25.6500473Z           "complete": false,
2026-06-22T00:46:25.6500580Z           "evidence": []
2026-06-22T00:46:25.6500679Z         },
2026-06-22T00:46:25.6500784Z         "impl": {
2026-06-22T00:46:25.6500889Z           "complete": false,
2026-06-22T00:46:25.6500989Z           "evidence": []
2026-06-22T00:46:25.6501088Z         },
2026-06-22T00:46:25.6501187Z         "int": {
2026-06-22T00:46:25.6501297Z           "complete": false,
2026-06-22T00:46:25.6501405Z           "evidence": []
2026-06-22T00:46:25.6501505Z         },
2026-06-22T00:46:25.6501611Z         "unit": {
2026-06-22T00:46:25.6501720Z           "complete": false,
2026-06-22T00:46:25.6501820Z           "evidence": []
2026-06-22T00:46:25.6501925Z         }
2026-06-22T00:46:25.6502025Z       }
2026-06-22T00:46:25.6502134Z     },
2026-06-22T00:46:25.6502235Z     {
2026-06-22T00:46:25.6502344Z       "id": "REQ-PRES-1",
2026-06-22T00:46:25.6503675Z       "title": "Presence resolution: the presence datum (last_active_node, last_active_endpoint, ts) gossiped subnet-wide via the agent-interaction heartbeat (rides registry distribution, visibility-gated) + one first-class most-recently-active resolution API consumed by notif first-fire, update-consent delivery, consent escalation, and shell wake resolution (M5 scope decision 1: resolution only — the PresenceChannel endpoint stays deferred)",
2026-06-22T00:46:25.6503786Z       "requiredStages": [
2026-06-22T00:46:25.6503894Z         "impl",
2026-06-22T00:46:25.6503993Z         "unit",
2026-06-22T00:46:25.6504098Z         "int"
2026-06-22T00:46:25.6504204Z       ],
2026-06-22T00:46:25.6504307Z       "stages": {
2026-06-22T00:46:25.6504408Z         "doc": {
2026-06-22T00:46:25.6504518Z           "complete": true,
2026-06-22T00:46:25.6504627Z           "evidence": [
2026-06-22T00:46:25.6504723Z             {
2026-06-22T00:46:25.6504847Z               "path": "docs/DEFERRED.md",
2026-06-22T00:46:25.6504965Z               "line": 11
2026-06-22T00:46:25.6505067Z             }
2026-06-22T00:46:25.6505166Z           ]
2026-06-22T00:46:25.6505270Z         },
2026-06-22T00:46:25.6505377Z         "impl": {
2026-06-22T00:46:25.6505481Z           "complete": true,
2026-06-22T00:46:25.6505590Z           "evidence": [
2026-06-22T00:46:25.6505697Z             {
2026-06-22T00:46:25.6505838Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T00:46:25.6505948Z               "line": 515
2026-06-22T00:46:25.6506049Z             },
2026-06-22T00:46:25.6506157Z             {
2026-06-22T00:46:25.6506289Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T00:46:25.6506405Z               "line": 567
2026-06-22T00:46:25.6506512Z             },
2026-06-22T00:46:25.6506611Z             {
2026-06-22T00:46:25.6506741Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T00:46:25.6506845Z               "line": 188
2026-06-22T00:46:25.6506950Z             },
2026-06-22T00:46:25.6507156Z             {
2026-06-22T00:46:25.6507294Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T00:46:25.6507480Z               "line": 214
2026-06-22T00:46:25.6507585Z             },
2026-06-22T00:46:25.6507686Z             {
2026-06-22T00:46:25.6507837Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T00:46:25.6507943Z               "line": 28
2026-06-22T00:46:25.6508047Z             },
2026-06-22T00:46:25.6508147Z             {
2026-06-22T00:46:25.6508282Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T00:46:25.6508385Z               "line": 105
2026-06-22T00:46:25.6508486Z             },
2026-06-22T00:46:25.6508587Z             {
2026-06-22T00:46:25.6508719Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T00:46:25.6508820Z               "line": 161
2026-06-22T00:46:25.6508921Z             },
2026-06-22T00:46:25.6509110Z             {
2026-06-22T00:46:25.6509532Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T00:46:25.6509736Z               "line": 180
2026-06-22T00:46:25.6509856Z             },
2026-06-22T00:46:25.6509990Z             {
2026-06-22T00:46:25.6510186Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.6510314Z               "line": 421
2026-06-22T00:46:25.6510442Z             },
2026-06-22T00:46:25.6510567Z             {
2026-06-22T00:46:25.6510743Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T00:46:25.6510873Z               "line": 289
2026-06-22T00:46:25.6510995Z             },
2026-06-22T00:46:25.6511116Z             {
2026-06-22T00:46:25.6511281Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T00:46:25.6511411Z               "line": 336
2026-06-22T00:46:25.6511530Z             },
2026-06-22T00:46:25.6511658Z             {
2026-06-22T00:46:25.6511824Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T00:46:25.6511955Z               "line": 362
2026-06-22T00:46:25.6512079Z             },
2026-06-22T00:46:25.6512195Z             {
2026-06-22T00:46:25.6512365Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.6512490Z               "line": 100
2026-06-22T00:46:25.6512613Z             }
2026-06-22T00:46:25.6512728Z           ]
2026-06-22T00:46:25.6512847Z         },
2026-06-22T00:46:25.6512966Z         "int": {
2026-06-22T00:46:25.6513096Z           "complete": true,
2026-06-22T00:46:25.6513229Z           "evidence": [
2026-06-22T00:46:25.6513338Z             {
2026-06-22T00:46:25.6513515Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T00:46:25.6513643Z               "line": 563
2026-06-22T00:46:25.6513768Z             },
2026-06-22T00:46:25.6513896Z             {
2026-06-22T00:46:25.6514055Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T00:46:25.6514187Z               "line": 747
2026-06-22T00:46:25.6514302Z             },
2026-06-22T00:46:25.6514426Z             {
2026-06-22T00:46:25.6514581Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T00:46:25.6514716Z               "line": 1165
2026-06-22T00:46:25.6514849Z             }
2026-06-22T00:46:25.6514963Z           ]
2026-06-22T00:46:25.6515083Z         },
2026-06-22T00:46:25.6515206Z         "unit": {
2026-06-22T00:46:25.6515345Z           "complete": true,
2026-06-22T00:46:25.6515473Z           "evidence": [
2026-06-22T00:46:25.6515592Z             {
2026-06-22T00:46:25.6515750Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T00:46:25.6515869Z               "line": 674
2026-06-22T00:46:25.6515989Z             },
2026-06-22T00:46:25.6516088Z             {
2026-06-22T00:46:25.6516227Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T00:46:25.6516337Z               "line": 238
2026-06-22T00:46:25.6516441Z             },
2026-06-22T00:46:25.6516537Z             {
2026-06-22T00:46:25.6516661Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T00:46:25.6516774Z               "line": 269
2026-06-22T00:46:25.6517063Z             },
2026-06-22T00:46:25.6517167Z             {
2026-06-22T00:46:25.6517297Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T00:46:25.6517506Z               "line": 305
2026-06-22T00:46:25.6517612Z             },
2026-06-22T00:46:25.6517711Z             {
2026-06-22T00:46:25.6517845Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T00:46:25.6517950Z               "line": 336
2026-06-22T00:46:25.6518054Z             },
2026-06-22T00:46:25.6518150Z             {
2026-06-22T00:46:25.6518293Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.6518402Z               "line": 1217
2026-06-22T00:46:25.6518494Z             },
2026-06-22T00:46:25.6518598Z             {
2026-06-22T00:46:25.6518731Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.6518837Z               "line": 1163
2026-06-22T00:46:25.6519022Z             }
2026-06-22T00:46:25.6519167Z           ]
2026-06-22T00:46:25.6519288Z         }
2026-06-22T00:46:25.6519395Z       }
2026-06-22T00:46:25.6519515Z     },
2026-06-22T00:46:25.6519608Z     {
2026-06-22T00:46:25.6519712Z       "id": "REQ-RC-1",
2026-06-22T00:46:25.6521908Z       "title": "`spt rc <id>` — user CLI attaching a local terminal to a broker-held PTY, reusing the cross-node attach machinery (attach.rs request_attach → send_attach_input pump, spt-net AttachRecord codec); local attach is the degenerate single-node case of the cross-node path (rides REQ-TERM-3 byte-stream streaming). Read-only `--view` (watch, no stdin forwarded). Clean detach that does NOT terminate the broker-held session (KNOWN-HAZARDS: PTY ownership stays with the broker; no termination on detach). Explicit detach keybind that cannot collide with harness passthrough input (legacy capsule used a ctrl-b prefix); documented. ConPTY DSR auto-answer in the attach reader (hazard 5.5).",
2026-06-22T00:46:25.6522034Z       "requiredStages": [
2026-06-22T00:46:25.6522146Z         "impl",
2026-06-22T00:46:25.6522255Z         "unit",
2026-06-22T00:46:25.6522356Z         "int"
2026-06-22T00:46:25.6522454Z       ],
2026-06-22T00:46:25.6522563Z       "stages": {
2026-06-22T00:46:25.6522668Z         "doc": {
2026-06-22T00:46:25.6522769Z           "complete": false,
2026-06-22T00:46:25.6522887Z           "evidence": []
2026-06-22T00:46:25.6522993Z         },
2026-06-22T00:46:25.6523098Z         "impl": {
2026-06-22T00:46:25.6523216Z           "complete": true,
2026-06-22T00:46:25.6523313Z           "evidence": [
2026-06-22T00:46:25.6523417Z             {
2026-06-22T00:46:25.6523559Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T00:46:25.6523665Z               "line": 1038
2026-06-22T00:46:25.6523774Z             },
2026-06-22T00:46:25.6523865Z             {
2026-06-22T00:46:25.6523999Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.6524103Z               "line": 2200
2026-06-22T00:46:25.6524208Z             },
2026-06-22T00:46:25.6524305Z             {
2026-06-22T00:46:25.6524456Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T00:46:25.6524567Z               "line": 1017
2026-06-22T00:46:25.6524675Z             },
2026-06-22T00:46:25.6524785Z             {
2026-06-22T00:46:25.6524915Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T00:46:25.6525018Z               "line": 1051
2026-06-22T00:46:25.6525122Z             },
2026-06-22T00:46:25.6525233Z             {
2026-06-22T00:46:25.6525352Z               "path": "crates/spt/src/rc.rs",
2026-06-22T00:46:25.6525456Z               "line": 22
2026-06-22T00:46:25.6525562Z             },
2026-06-22T00:46:25.6525667Z             {
2026-06-22T00:46:25.6525780Z               "path": "crates/spt/src/rc.rs",
2026-06-22T00:46:25.6525886Z               "line": 701
2026-06-22T00:46:25.6525991Z             }
2026-06-22T00:46:25.6526099Z           ]
2026-06-22T00:46:25.6526201Z         },
2026-06-22T00:46:25.6526310Z         "int": {
2026-06-22T00:46:25.6526419Z           "complete": true,
2026-06-22T00:46:25.6526639Z           "evidence": [
2026-06-22T00:46:25.6526729Z             {
2026-06-22T00:46:25.6526963Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T00:46:25.6527073Z               "line": 261
2026-06-22T00:46:25.6527169Z             },
2026-06-22T00:46:25.6527268Z             {
2026-06-22T00:46:25.6527401Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T00:46:25.6527510Z               "line": 288
2026-06-22T00:46:25.6527609Z             },
2026-06-22T00:46:25.6527708Z             {
2026-06-22T00:46:25.6527848Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T00:46:25.6527952Z               "line": 416
2026-06-22T00:46:25.6528056Z             }
2026-06-22T00:46:25.6528158Z           ]
2026-06-22T00:46:25.6528257Z         },
2026-06-22T00:46:25.6528356Z         "unit": {
2026-06-22T00:46:25.6528467Z           "complete": true,
2026-06-22T00:46:25.6528572Z           "evidence": [
2026-06-22T00:46:25.6528671Z             {
2026-06-22T00:46:25.6528815Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T00:46:25.6528910Z               "line": 1415
2026-06-22T00:46:25.6529534Z             },
2026-06-22T00:46:25.6529717Z             {
2026-06-22T00:46:25.6529888Z               "path": "crates/spt/src/rc.rs",
2026-06-22T00:46:25.6530023Z               "line": 1133
2026-06-22T00:46:25.6530150Z             },
2026-06-22T00:46:25.6530273Z             {
2026-06-22T00:46:25.6530420Z               "path": "crates/spt/src/rc.rs",
2026-06-22T00:46:25.6530551Z               "line": 1162
2026-06-22T00:46:25.6530671Z             },
2026-06-22T00:46:25.6530791Z             {
2026-06-22T00:46:25.6530937Z               "path": "crates/spt/src/rc.rs",
2026-06-22T00:46:25.6531053Z               "line": 1175
2026-06-22T00:46:25.6531176Z             }
2026-06-22T00:46:25.6531287Z           ]
2026-06-22T00:46:25.6531410Z         }
2026-06-22T00:46:25.6531538Z       }
2026-06-22T00:46:25.6531659Z     },
2026-06-22T00:46:25.6531797Z     {
2026-06-22T00:46:25.6531940Z       "id": "REQ-RC-KEY-VT-TRANSLATE",
2026-06-22T00:46:25.6539056Z       "title": "On Windows, `spt rc` translates CONSOLE KEY EVENTS to standard xterm VT so ALL keys reach the hosted harness — arrows/Home/End/PgUp/PgDn/Insert/Delete/F-keys, every modifier combo, Backspace/Ctrl+Backspace — not just the byte-emitting ones. ROOT (operator HITL, doyle /diagnose): `spt rc` reads raw STDIN BYTES (spawn_stdin_reader, std::io::stdin().read); on the Windows LEGACY console (no ENABLE_VIRTUAL_TERMINAL_INPUT) the special keys produce console KEY_EVENTs, NOT stdin bytes, so the byte-pump sees nothing → those keys are DEAD. Enabling ENABLE_VIRTUAL_TERMINAL_INPUT was rejected (W7 dc07c39): on Windows Terminal it yields harness-specific win32-input-mode + broke ctrl-b detach. FIX (agnostic, full fidelity): on Windows, replace the stdin byte-read with a crossterm EVENT source (crossterm 0.28 already a dep; the picker already reads events) and translate each KeyEvent → STANDARD xterm VT bytes via a PURE translate_key_event(KeyEvent)->Vec<u8> (copy a known-correct xterm table verbatim, ADR-0001 spirit), forwarded through the SAME rc pump — the harness receives ordinary xterm VT (harness-AGNOSTIC, no win32-input-mode). Press-only (drop Repeat/Release). Detach stays the ctrl-b+'d' PREFIX, event-sourced (doyle Option B): Ctrl+B arms; armed+plain-'d'⇒Detach; armed+Ctrl+B⇒emit literal 0x02; armed+other⇒0x02 then translate(other). Non-tty stdin (piped/tests) → FALL BACK to the byte-read path (keeps e2e byte-injection working). UNIX UNCHANGED (its raw-mode byte stream already delivers proper VT; cfg-split, zero Unix regression). SUPERSEDES the W7 normalize_key_byte swap on Windows — the translator emits 0x7f for Backspace and 0x08 for Ctrl+Backspace natively (REQ-HAZARD-RC-INPUT-KEY-ENCODING folded in). NO int (a live interactive console can't be driven in CI — HITL, REQ-RUN-PICKER/RC-1 precedent); the exhaustive non-vacuous translate_key_event mapping unit + the event-detach unit ARE the surface. (v0.13.0)",
2026-06-22T00:46:25.6539456Z       "requiredStages": [
2026-06-22T00:46:25.6539566Z         "doc",
2026-06-22T00:46:25.6539776Z         "impl",
2026-06-22T00:46:25.6539875Z         "unit"
2026-06-22T00:46:25.6539981Z       ],
2026-06-22T00:46:25.6540090Z       "stages": {
2026-06-22T00:46:25.6540195Z         "doc": {
2026-06-22T00:46:25.6540301Z           "complete": true,
2026-06-22T00:46:25.6540405Z           "evidence": [
2026-06-22T00:46:25.6540510Z             {
2026-06-22T00:46:25.6540630Z               "path": "CONTEXT.md",
2026-06-22T00:46:25.6540729Z               "line": 345
2026-06-22T00:46:25.6540833Z             },
2026-06-22T00:46:25.6540937Z             {
2026-06-22T00:46:25.6541060Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T00:46:25.6541169Z               "line": 440
2026-06-22T00:46:25.6541275Z             }
2026-06-22T00:46:25.6541379Z           ]
2026-06-22T00:46:25.6541484Z         },
2026-06-22T00:46:25.6541594Z         "impl": {
2026-06-22T00:46:25.6541703Z           "complete": true,
2026-06-22T00:46:25.6541817Z           "evidence": [
2026-06-22T00:46:25.6541919Z             {
2026-06-22T00:46:25.6542042Z               "path": "crates/spt/src/rc.rs",
2026-06-22T00:46:25.6542146Z               "line": 226
2026-06-22T00:46:25.6542252Z             },
2026-06-22T00:46:25.6542361Z             {
2026-06-22T00:46:25.6542481Z               "path": "crates/spt/src/rc.rs",
2026-06-22T00:46:25.6542591Z               "line": 285
2026-06-22T00:46:25.6542700Z             },
2026-06-22T00:46:25.6542811Z             {
2026-06-22T00:46:25.6542929Z               "path": "crates/spt/src/rc.rs",
2026-06-22T00:46:25.6543038Z               "line": 300
2026-06-22T00:46:25.6543154Z             },
2026-06-22T00:46:25.6543244Z             {
2026-06-22T00:46:25.6543366Z               "path": "crates/spt/src/rc.rs",
2026-06-22T00:46:25.6543476Z               "line": 315
2026-06-22T00:46:25.6543584Z             },
2026-06-22T00:46:25.6543688Z             {
2026-06-22T00:46:25.6543807Z               "path": "crates/spt/src/rc.rs",
2026-06-22T00:46:25.6543918Z               "line": 364
2026-06-22T00:46:25.6544026Z             }
2026-06-22T00:46:25.6544133Z           ]
2026-06-22T00:46:25.6544238Z         },
2026-06-22T00:46:25.6544341Z         "int": {
2026-06-22T00:46:25.6544447Z           "complete": false,
2026-06-22T00:46:25.6544566Z           "evidence": []
2026-06-22T00:46:25.6544670Z         },
2026-06-22T00:46:25.6544767Z         "unit": {
2026-06-22T00:46:25.6544880Z           "complete": true,
2026-06-22T00:46:25.6544990Z           "evidence": [
2026-06-22T00:46:25.6545101Z             {
2026-06-22T00:46:25.6545224Z               "path": "crates/spt/src/rc.rs",
2026-06-22T00:46:25.6545333Z               "line": 1190
2026-06-22T00:46:25.6545439Z             },
2026-06-22T00:46:25.6545543Z             {
2026-06-22T00:46:25.6545663Z               "path": "crates/spt/src/rc.rs",
2026-06-22T00:46:25.6545768Z               "line": 1305
2026-06-22T00:46:25.6545872Z             }
2026-06-22T00:46:25.6545978Z           ]
2026-06-22T00:46:25.6546088Z         }
2026-06-22T00:46:25.6546200Z       }
2026-06-22T00:46:25.6546305Z     },
2026-06-22T00:46:25.6546406Z     {
2026-06-22T00:46:25.6546524Z       "id": "REQ-RC-MOUSE-FORWARD",
2026-06-22T00:46:25.6550823Z       "title": "On Windows, `spt rc` must FORWARD scroll-wheel events to the harness when the harness has mouse reporting on. ROOT (operator HITL): P1's RawGuard EnableMouseCapture (added for right-click paste, REQ-RC-WIN-PASTE) makes Windows Terminal forward ALL mouse — including the scroll wheel — to rc instead of scrolling its own buffer, but the rc mouse handler dropped everything except right-button-down → scroll DIED (and WT's native scrollback is stolen by the capture). Operator ruling: keep mouse capture + right-click bracketed paste AND forward scroll to the harness. FIX (doyle design, cfg(windows), folds into the rc mouse handler): TRACK the harness's mouse-reporting mode by scanning its OUTPUT stream for the DECSET set/reset — ESC[?1000h/1002h/1003h (mouse on) + ESC[?1006h (SGR ext) and their ...l (off) — into a shared MouseMode{enabled,sgr} (pump writes from output, stdin reader reads); the scan survives a sequence SPLIT across output chunks (a bounded carry buffer). The mouse handler: right-button-DOWN -> bracketed clipboard paste (unchanged, REQ-RC-WIN-PASTE); ScrollUp/Down -> translate to an xterm SGR mouse report (ESC[<64;col+1;row+1M up / ESC[<65;..M down, 0-based crossterm -> 1-based xterm) and forward ONLY when enabled && sgr (else DROP — a legacy X10 report the harness may not parse is garbage); Moved/drag/left/middle -> DROP (scroll is the operator's need; click-forward risks garbage, no click-to-position). Unix UNCHANGED (no capture; the terminal scrolls natively). (v0.13.0)",
2026-06-22T00:46:25.6551167Z       "requiredStages": [
2026-06-22T00:46:25.6551279Z         "doc",
2026-06-22T00:46:25.6551369Z         "impl",
2026-06-22T00:46:25.6551465Z         "unit"
2026-06-22T00:46:25.6551559Z       ],
2026-06-22T00:46:25.6551676Z       "stages": {
2026-06-22T00:46:25.6551787Z         "doc": {
2026-06-22T00:46:25.6551882Z           "complete": true,
2026-06-22T00:46:25.6551996Z           "evidence": [
2026-06-22T00:46:25.6552097Z             {
2026-06-22T00:46:25.6552221Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T00:46:25.6552325Z               "line": 461
2026-06-22T00:46:25.6552431Z             }
2026-06-22T00:46:25.6552535Z           ]
2026-06-22T00:46:25.6552635Z         },
2026-06-22T00:46:25.6552731Z         "impl": {
2026-06-22T00:46:25.6552840Z           "complete": true,
2026-06-22T00:46:25.6552941Z           "evidence": [
2026-06-22T00:46:25.6553041Z             {
2026-06-22T00:46:25.6553169Z               "path": "crates/spt/src/rc.rs",
2026-06-22T00:46:25.6553279Z               "line": 421
2026-06-22T00:46:25.6553381Z             },
2026-06-22T00:46:25.6553484Z             {
2026-06-22T00:46:25.6553603Z               "path": "crates/spt/src/rc.rs",
2026-06-22T00:46:25.6553714Z               "line": 437
2026-06-22T00:46:25.6553818Z             }
2026-06-22T00:46:25.6553922Z           ]
2026-06-22T00:46:25.6554027Z         },
2026-06-22T00:46:25.6554135Z         "int": {
2026-06-22T00:46:25.6554238Z           "complete": false,
2026-06-22T00:46:25.6554344Z           "evidence": []
2026-06-22T00:46:25.6554450Z         },
2026-06-22T00:46:25.6554548Z         "unit": {
2026-06-22T00:46:25.6554654Z           "complete": true,
2026-06-22T00:46:25.6554763Z           "evidence": [
2026-06-22T00:46:25.6554863Z             {
2026-06-22T00:46:25.6554983Z               "path": "crates/spt/src/rc.rs",
2026-06-22T00:46:25.6555087Z               "line": 1440
2026-06-22T00:46:25.6555187Z             },
2026-06-22T00:46:25.6555284Z             {
2026-06-22T00:46:25.6555407Z               "path": "crates/spt/src/rc.rs",
2026-06-22T00:46:25.6555516Z               "line": 1459
2026-06-22T00:46:25.6555613Z             },
2026-06-22T00:46:25.6555703Z             {
2026-06-22T00:46:25.6555817Z               "path": "crates/spt/src/rc.rs",
2026-06-22T00:46:25.6555937Z               "line": 1471
2026-06-22T00:46:25.6556037Z             },
2026-06-22T00:46:25.6556150Z             {
2026-06-22T00:46:25.6556276Z               "path": "crates/spt/src/rc.rs",
2026-06-22T00:46:25.6556380Z               "line": 1499
2026-06-22T00:46:25.6556475Z             }
2026-06-22T00:46:25.6556562Z           ]
2026-06-22T00:46:25.6556662Z         }
2026-06-22T00:46:25.6556755Z       }
2026-06-22T00:46:25.6556865Z     },
2026-06-22T00:46:25.6556966Z     {
2026-06-22T00:46:25.6557084Z       "id": "REQ-RC-WIN-PASTE",
2026-06-22T00:46:25.6561732Z       "title": "In an `spt rc` session neither ctrl+V nor right-click pastes (CC explicitly supports ctrl+V). ROOT (doyle /diagnose): RawGuard does only enable_raw_mode (no bracketed paste / no mouse capture / no clipboard interception); the Windows console delivers a paste as synthetic per-char KEY EVENTs (no crossterm Event::Paste), and ctrl+V translates to bare ^V forwarded to CC — but CC runs DAEMON-SIDE with NO access to the operator's LOCAL clipboard, so remote paste is fundamentally CLIENT-ORIGINATED. A multi-line paste-as-keys also becomes a \\r submit-storm. FIX (doyle design, V0.13.0-P1-RC-PASTE-DESIGN.md, cfg(windows), folds into the bug-2 event path): on a paste gesture rc reads the LOCAL clipboard + forwards a BRACKETED PASTE (ESC[200~ + content + ESC[201~); CC has bracketed-paste mode on (its TUI sets ESC[?2004h) so it treats it as a paste — content intact, no submit-storm, harness-AGNOSTIC. ctrl+V: intercept Char('v')+CONTROL in the event loop -> read_clipboard -> bracketed paste. Right-click: RawGuard also EnableMouseCapture (disables console QuickEdit + enables ENABLE_MOUSE_INPUT so right-click surfaces as Event::Mouse on legacy cmd/powershell) -> right-button -> read_clipboard -> bracketed paste; DROP all other mouse (CC has no mouse features, operator-confirmed, so capture costs nothing). read_clipboard = clipboard-win crate (cfg(windows), minimal); empty/failed = clean no-op. Content forwarded VERBATIM (literal pasted text, no per-char translation). Unix UNCHANGED (its terminal pastes natively through the byte pump). DEPENDS ON P0 (a paste chunk must not wedge the broker). (v0.13.0)",
2026-06-22T00:46:25.6562063Z       "requiredStages": [
2026-06-22T00:46:25.6562156Z         "doc",
2026-06-22T00:46:25.6562246Z         "impl",
2026-06-22T00:46:25.6562327Z         "unit"
2026-06-22T00:46:25.6562414Z       ],
2026-06-22T00:46:25.6562494Z       "stages": {
2026-06-22T00:46:25.6562584Z         "doc": {
2026-06-22T00:46:25.6562686Z           "complete": true,
2026-06-22T00:46:25.6562781Z           "evidence": [
2026-06-22T00:46:25.6562871Z             {
2026-06-22T00:46:25.6562977Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T00:46:25.6563077Z               "line": 447
2026-06-22T00:46:25.6563162Z             }
2026-06-22T00:46:25.6563243Z           ]
2026-06-22T00:46:25.6563325Z         },
2026-06-22T00:46:25.6563415Z         "impl": {
2026-06-22T00:46:25.6563505Z           "complete": true,
2026-06-22T00:46:25.6563601Z           "evidence": [
2026-06-22T00:46:25.6563687Z             {
2026-06-22T00:46:25.6563791Z               "path": "crates/spt/src/rc.rs",
2026-06-22T00:46:25.6563897Z               "line": 395
2026-06-22T00:46:25.6563983Z             },
2026-06-22T00:46:25.6564072Z             {
2026-06-22T00:46:25.6564177Z               "path": "crates/spt/src/rc.rs",
2026-06-22T00:46:25.6564265Z               "line": 411
2026-06-22T00:46:25.6564359Z             },
2026-06-22T00:46:25.6564444Z             {
2026-06-22T00:46:25.6564548Z               "path": "crates/spt/src/rc.rs",
2026-06-22T00:46:25.6564634Z               "line": 454
2026-06-22T00:46:25.6564718Z             },
2026-06-22T00:46:25.6564803Z             {
2026-06-22T00:46:25.6564904Z               "path": "crates/spt/src/rc.rs",
2026-06-22T00:46:25.6564995Z               "line": 468
2026-06-22T00:46:25.6565071Z             },
2026-06-22T00:46:25.6565156Z             {
2026-06-22T00:46:25.6565257Z               "path": "crates/spt/src/rc.rs",
2026-06-22T00:46:25.6565362Z               "line": 479
2026-06-22T00:46:25.6565442Z             }
2026-06-22T00:46:25.6565534Z           ]
2026-06-22T00:46:25.6565624Z         },
2026-06-22T00:46:25.6565701Z         "int": {
2026-06-22T00:46:25.6565795Z           "complete": false,
2026-06-22T00:46:25.6565887Z           "evidence": []
2026-06-22T00:46:25.6565977Z         },
2026-06-22T00:46:25.6566076Z         "unit": {
2026-06-22T00:46:25.6566168Z           "complete": true,
2026-06-22T00:46:25.6566263Z           "evidence": [
2026-06-22T00:46:25.6566349Z             {
2026-06-22T00:46:25.6566458Z               "path": "crates/spt/src/rc.rs",
2026-06-22T00:46:25.6566550Z               "line": 1381
2026-06-22T00:46:25.6566644Z             },
2026-06-22T00:46:25.6566730Z             {
2026-06-22T00:46:25.6566836Z               "path": "crates/spt/src/rc.rs",
2026-06-22T00:46:25.6566921Z               "line": 1402
2026-06-22T00:46:25.6567007Z             },
2026-06-22T00:46:25.6567103Z             {
2026-06-22T00:46:25.6567278Z               "path": "crates/spt/src/rc.rs",
2026-06-22T00:46:25.6567368Z               "line": 1423
2026-06-22T00:46:25.6567545Z             }
2026-06-22T00:46:25.6567626Z           ]
2026-06-22T00:46:25.6567711Z         }
2026-06-22T00:46:25.6567797Z       }
2026-06-22T00:46:25.6567883Z     },
2026-06-22T00:46:25.6567968Z     {
2026-06-22T00:46:25.6568064Z       "id": "REQ-RCVIEW-1",
2026-06-22T00:46:25.6572452Z       "title": "Remote-attach controller/viewer model (CONTEXT.md:317): a session's broker OutputLog serves ONE interactive controller (input + EXCLUSIVE PTY resize; its viewport sets the size, sent on attach + every window change via crossterm Event::Resize) plus ANY NUMBER of read-only `--view` attachers (output-only, no input, no resize; client-side letterbox — center+pad when larger, clip+1-line indicator when smaller; only the local ctrl-b d detach chord). Attach intent is three-valued (`Viewer | Control | Take`, wire-default Control): Control to a FREE endpoint becomes controller, Control to a CONTROLLED endpoint is REFUSED with guidance (`--view`/`--take`) — never auto-viewer, never silent-displace. Wire adds (additive, N-1 skip-unknown): `Request.intent`, `Resize{rows,cols}` (controller-only), `Size{rows,cols}` (→viewer), `Displaced{by}` (→displaced controller). The brain-resume cursor (delivered_through, ADR-0018) tracks the CONTROLLER ONLY; viewers replay from their own from_seq and never move it. Dormancy keys on the controller ONLY: controller attach wakes / controller detach goes dormant (even with viewers present); viewer attach/detach is wake-neutral and may watch a dormant endpoint as-is. v1: viewing is gated identically to driving — a viewer runs the same access_check(Unsolicited) as a controller (watching reveals full session contents = a real disclosure); a lighter distinct watch-gate is deferred to cross-subnet/finer-consent (CONTEXT.md:317 'driving ≠ watching' = the future seam).",
2026-06-22T00:46:25.6572594Z       "requiredStages": [
2026-06-22T00:46:25.6572697Z         "doc",
2026-06-22T00:46:25.6572783Z         "impl",
2026-06-22T00:46:25.6572869Z         "unit",
2026-06-22T00:46:25.6572965Z         "int"
2026-06-22T00:46:25.6573050Z       ],
2026-06-22T00:46:25.6573144Z       "stages": {
2026-06-22T00:46:25.6573222Z         "doc": {
2026-06-22T00:46:25.6573317Z           "complete": true,
2026-06-22T00:46:25.6573412Z           "evidence": [
2026-06-22T00:46:25.6573493Z             {
2026-06-22T00:46:25.6573599Z               "path": "CONTEXT.md",
2026-06-22T00:46:25.6573680Z               "line": 342
2026-06-22T00:46:25.6573765Z             }
2026-06-22T00:46:25.6573846Z           ]
2026-06-22T00:46:25.6573937Z         },
2026-06-22T00:46:25.6574018Z         "impl": {
2026-06-22T00:46:25.6574103Z           "complete": true,
2026-06-22T00:46:25.6574196Z           "evidence": [
2026-06-22T00:46:25.6574280Z             {
2026-06-22T00:46:25.6574414Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T00:46:25.6574501Z               "line": 549
2026-06-22T00:46:25.6574595Z             },
2026-06-22T00:46:25.6574680Z             {
2026-06-22T00:46:25.6574806Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.6574896Z               "line": 716
2026-06-22T00:46:25.6574981Z             },
2026-06-22T00:46:25.6575070Z             {
2026-06-22T00:46:25.6575189Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.6575278Z               "line": 727
2026-06-22T00:46:25.6575363Z             },
2026-06-22T00:46:25.6575450Z             {
2026-06-22T00:46:25.6575575Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T00:46:25.6575669Z               "line": 41
2026-06-22T00:46:25.6575754Z             },
2026-06-22T00:46:25.6575841Z             {
2026-06-22T00:46:25.6575964Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T00:46:25.6576055Z               "line": 62
2026-06-22T00:46:25.6576151Z             },
2026-06-22T00:46:25.6576237Z             {
2026-06-22T00:46:25.6576480Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T00:46:25.6576575Z               "line": 309
2026-06-22T00:46:25.6576748Z             },
2026-06-22T00:46:25.6576838Z             {
2026-06-22T00:46:25.6576942Z               "path": "crates/spt/src/rc.rs",
2026-06-22T00:46:25.6577033Z               "line": 701
2026-06-22T00:46:25.6577152Z             }
2026-06-22T00:46:25.6577233Z           ]
2026-06-22T00:46:25.6577329Z         },
2026-06-22T00:46:25.6577415Z         "int": {
2026-06-22T00:46:25.6577514Z           "complete": true,
2026-06-22T00:46:25.6577600Z           "evidence": [
2026-06-22T00:46:25.6577687Z             {
2026-06-22T00:46:25.6577819Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T00:46:25.6577909Z               "line": 916
2026-06-22T00:46:25.6577995Z             },
2026-06-22T00:46:25.6578077Z             {
2026-06-22T00:46:25.6578200Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T00:46:25.6578286Z               "line": 956
2026-06-22T00:46:25.6578377Z             },
2026-06-22T00:46:25.6578468Z             {
2026-06-22T00:46:25.6578586Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T00:46:25.6578701Z               "line": 1003
2026-06-22T00:46:25.6578825Z             },
2026-06-22T00:46:25.6578925Z             {
2026-06-22T00:46:25.6579135Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T00:46:25.6579244Z               "line": 1155
2026-06-22T00:46:25.6579336Z             }
2026-06-22T00:46:25.6579416Z           ]
2026-06-22T00:46:25.6579511Z         },
2026-06-22T00:46:25.6579613Z         "unit": {
2026-06-22T00:46:25.6579708Z           "complete": true,
2026-06-22T00:46:25.6579802Z           "evidence": [
2026-06-22T00:46:25.6579884Z             {
2026-06-22T00:46:25.6583733Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T00:46:25.6583868Z               "line": 175
2026-06-22T00:46:25.6583967Z             },
2026-06-22T00:46:25.6584053Z             {
2026-06-22T00:46:25.6584211Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T00:46:25.6584310Z               "line": 195
2026-06-22T00:46:25.6584402Z             }
2026-06-22T00:46:25.6584497Z           ]
2026-06-22T00:46:25.6584583Z         }
2026-06-22T00:46:25.6584668Z       }
2026-06-22T00:46:25.6584751Z     },
2026-06-22T00:46:25.6584845Z     {
2026-06-22T00:46:25.6584945Z       "id": "REQ-REACH-1",
2026-06-22T00:46:25.6585104Z       "title": "Off-node remote-drive detection + file transfer",
2026-06-22T00:46:25.6585212Z       "requiredStages": [
2026-06-22T00:46:25.6585298Z         "impl",
2026-06-22T00:46:25.6585390Z         "unit",
2026-06-22T00:46:25.6585479Z         "int"
2026-06-22T00:46:25.6585569Z       ],
2026-06-22T00:46:25.6585654Z       "stages": {
2026-06-22T00:46:25.6585736Z         "doc": {
2026-06-22T00:46:25.6585843Z           "complete": false,
2026-06-22T00:46:25.6585937Z           "evidence": []
2026-06-22T00:46:25.6586024Z         },
2026-06-22T00:46:25.6586116Z         "impl": {
2026-06-22T00:46:25.6586219Z           "complete": true,
2026-06-22T00:46:25.6586315Z           "evidence": [
2026-06-22T00:46:25.6586411Z             {
2026-06-22T00:46:25.6586544Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.6586639Z               "line": 716
2026-06-22T00:46:25.6586725Z             },
2026-06-22T00:46:25.6586801Z             {
2026-06-22T00:46:25.6586920Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T00:46:25.6587021Z               "line": 76
2026-06-22T00:46:25.6587102Z             },
2026-06-22T00:46:25.6587192Z             {
2026-06-22T00:46:25.6587308Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T00:46:25.6587393Z               "line": 222
2026-06-22T00:46:25.6587483Z             },
2026-06-22T00:46:25.6587574Z             {
2026-06-22T00:46:25.6587693Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T00:46:25.6587779Z               "line": 422
2026-06-22T00:46:25.6587864Z             },
2026-06-22T00:46:25.6588098Z             {
2026-06-22T00:46:25.6588204Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T00:46:25.6588379Z               "line": 529
2026-06-22T00:46:25.6588464Z             },
2026-06-22T00:46:25.6588550Z             {
2026-06-22T00:46:25.6588670Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-22T00:46:25.6588765Z               "line": 39
2026-06-22T00:46:25.6588851Z             },
2026-06-22T00:46:25.6588932Z             {
2026-06-22T00:46:25.6589131Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T00:46:25.6589228Z               "line": 301
2026-06-22T00:46:25.6589304Z             },
2026-06-22T00:46:25.6589390Z             {
2026-06-22T00:46:25.6589495Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-22T00:46:25.6589581Z               "line": 88
2026-06-22T00:46:25.6589666Z             },
2026-06-22T00:46:25.6589756Z             {
2026-06-22T00:46:25.6589867Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-22T00:46:25.6589971Z               "line": 98
2026-06-22T00:46:25.6590057Z             },
2026-06-22T00:46:25.6590143Z             {
2026-06-22T00:46:25.6590263Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.6590352Z               "line": 233
2026-06-22T00:46:25.6590444Z             }
2026-06-22T00:46:25.6590521Z           ]
2026-06-22T00:46:25.6590610Z         },
2026-06-22T00:46:25.6590695Z         "int": {
2026-06-22T00:46:25.6590800Z           "complete": true,
2026-06-22T00:46:25.6590890Z           "evidence": [
2026-06-22T00:46:25.6590979Z             {
2026-06-22T00:46:25.6591107Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T00:46:25.6591199Z               "line": 415
2026-06-22T00:46:25.6591279Z             },
2026-06-22T00:46:25.6591364Z             {
2026-06-22T00:46:25.6591494Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T00:46:25.6591590Z               "line": 520
2026-06-22T00:46:25.6591674Z             },
2026-06-22T00:46:25.6591852Z             {
2026-06-22T00:46:25.6591984Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T00:46:25.6592086Z               "line": 998
2026-06-22T00:46:25.6592171Z             },
2026-06-22T00:46:25.6592257Z             {
2026-06-22T00:46:25.6592371Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T00:46:25.6592467Z               "line": 1383
2026-06-22T00:46:25.6592557Z             }
2026-06-22T00:46:25.6592633Z           ]
2026-06-22T00:46:25.6592725Z         },
2026-06-22T00:46:25.6592806Z         "unit": {
2026-06-22T00:46:25.6592905Z           "complete": true,
2026-06-22T00:46:25.6593005Z           "evidence": [
2026-06-22T00:46:25.6593088Z             {
2026-06-22T00:46:25.6593205Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T00:46:25.6593301Z               "line": 639
2026-06-22T00:46:25.6593393Z             },
2026-06-22T00:46:25.6593469Z             {
2026-06-22T00:46:25.6593591Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T00:46:25.6593686Z               "line": 660
2026-06-22T00:46:25.6593781Z             },
2026-06-22T00:46:25.6593869Z             {
2026-06-22T00:46:25.6593994Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T00:46:25.6594075Z               "line": 771
2026-06-22T00:46:25.6594161Z             },
2026-06-22T00:46:25.6594246Z             {
2026-06-22T00:46:25.6594357Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-22T00:46:25.6594452Z               "line": 93
2026-06-22T00:46:25.6594532Z             },
2026-06-22T00:46:25.6594618Z             {
2026-06-22T00:46:25.6594742Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-22T00:46:25.6594828Z               "line": 224
2026-06-22T00:46:25.6594918Z             },
2026-06-22T00:46:25.6595005Z             {
2026-06-22T00:46:25.6595134Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-22T00:46:25.6595224Z               "line": 96
2026-06-22T00:46:25.6595424Z             },
2026-06-22T00:46:25.6595510Z             {
2026-06-22T00:46:25.6595621Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-22T00:46:25.6595801Z               "line": 146
2026-06-22T00:46:25.6595887Z             },
2026-06-22T00:46:25.6595969Z             {
2026-06-22T00:46:25.6596086Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T00:46:25.6596167Z               "line": 698
2026-06-22T00:46:25.6596257Z             },
2026-06-22T00:46:25.6596343Z             {
2026-06-22T00:46:25.6596456Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-22T00:46:25.6596541Z               "line": 118
2026-06-22T00:46:25.6596623Z             },
2026-06-22T00:46:25.6596713Z             {
2026-06-22T00:46:25.6596822Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-22T00:46:25.6596914Z               "line": 148
2026-06-22T00:46:25.6596999Z             },
2026-06-22T00:46:25.6597094Z             {
2026-06-22T00:46:25.6597209Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.6597314Z               "line": 928
2026-06-22T00:46:25.6597409Z             }
2026-06-22T00:46:25.6597500Z           ]
2026-06-22T00:46:25.6597591Z         }
2026-06-22T00:46:25.6597671Z       }
2026-06-22T00:46:25.6597762Z     },
2026-06-22T00:46:25.6597843Z     {
2026-06-22T00:46:25.6597943Z       "id": "REQ-REACH-2",
2026-06-22T00:46:25.6598105Z       "title": "Remote command execution (deferred, consent-gated)",
2026-06-22T00:46:25.6598202Z       "requiredStages": [],
2026-06-22T00:46:25.6598286Z       "stages": {
2026-06-22T00:46:25.6598372Z         "doc": {
2026-06-22T00:46:25.6598473Z           "complete": false,
2026-06-22T00:46:25.6598559Z           "evidence": []
2026-06-22T00:46:25.6598648Z         },
2026-06-22T00:46:25.6598744Z         "impl": {
2026-06-22T00:46:25.6598846Z           "complete": false,
2026-06-22T00:46:25.6598935Z           "evidence": []
2026-06-22T00:46:25.6599101Z         },
2026-06-22T00:46:25.6599187Z         "int": {
2026-06-22T00:46:25.6599282Z           "complete": false,
2026-06-22T00:46:25.6599377Z           "evidence": []
2026-06-22T00:46:25.6599468Z         },
2026-06-22T00:46:25.6599554Z         "unit": {
2026-06-22T00:46:25.6599654Z           "complete": false,
2026-06-22T00:46:25.6599740Z           "evidence": []
2026-06-22T00:46:25.6599826Z         }
2026-06-22T00:46:25.6599912Z       }
2026-06-22T00:46:25.6600006Z     },
2026-06-22T00:46:25.6600098Z     {
2026-06-22T00:46:25.6600203Z       "id": "REQ-READY-AGENT-RESUME",
2026-06-22T00:46:25.6603638Z       "title": "An offline ReadyAgent shows in `spt endpoint run`'s picker Resume-from-history and resumes correctly — closing the gap that today only LiveAgents do. ROOT: a harness-hosted ready bind (ReadyAgent::start_homed, ready.rs) writes info.json DIRECTLY and never appends the session ledger (unlike the shared establish_perch:250 live path), so a ready agent — though it has a session_id — produces ZERO ledger rows → the picker's offline+local Resume-from-history (which gates on ledger rows) never offers it. FIX (1): ledger the ready bind (ReadyAgent::start_homed → sessions::append Boot, mirroring establish_perch). FIX (2): `spt endpoint run --resume <session>` honors the adapter MANIFEST's endpoint TYPE — a ReadyAgent manifest (no [session.psyche_init]) resumes as a ready endpoint (poll listener, NO psyche-host); a LiveAgent (with psyche_init) as live. NO new bringup mode + NO picker changes (operator 2026-06-18): `spt endpoint run` is the spt-hosted ENDPOINT bringup for BOTH types, the type IS the adapter-manifest's concern (psyche-host already keys on psyche_init presence) — so (2) likely already holds; VERIFY at code, build only the residual. (v0.12.0)",
2026-06-22T00:46:25.6603784Z       "requiredStages": [
2026-06-22T00:46:25.6603871Z         "doc",
2026-06-22T00:46:25.6603953Z         "impl",
2026-06-22T00:46:25.6604043Z         "unit",
2026-06-22T00:46:25.6604127Z         "int"
2026-06-22T00:46:25.6604217Z       ],
2026-06-22T00:46:25.6604303Z       "stages": {
2026-06-22T00:46:25.6604534Z         "doc": {
2026-06-22T00:46:25.6604636Z           "complete": true,
2026-06-22T00:46:25.6604825Z           "evidence": [
2026-06-22T00:46:25.6604917Z             {
2026-06-22T00:46:25.6605012Z               "path": "CONTEXT.md",
2026-06-22T00:46:25.6605106Z               "line": 372
2026-06-22T00:46:25.6605188Z             }
2026-06-22T00:46:25.6605270Z           ]
2026-06-22T00:46:25.6605356Z         },
2026-06-22T00:46:25.6605440Z         "impl": {
2026-06-22T00:46:25.6605537Z           "complete": true,
2026-06-22T00:46:25.6605618Z           "evidence": [
2026-06-22T00:46:25.6605699Z             {
2026-06-22T00:46:25.6605822Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T00:46:25.6605914Z               "line": 110
2026-06-22T00:46:25.6605998Z             }
2026-06-22T00:46:25.6606074Z           ]
2026-06-22T00:46:25.6606152Z         },
2026-06-22T00:46:25.6606238Z         "int": {
2026-06-22T00:46:25.6606332Z           "complete": true,
2026-06-22T00:46:25.6606442Z           "evidence": [
2026-06-22T00:46:25.6606524Z             {
2026-06-22T00:46:25.6606670Z               "path": "crates/spt/tests/ready_resume_ledger_e2e.rs",
2026-06-22T00:46:25.6606769Z               "line": 26
2026-06-22T00:46:25.6606856Z             }
2026-06-22T00:46:25.6606940Z           ]
2026-06-22T00:46:25.6607030Z         },
2026-06-22T00:46:25.6607116Z         "unit": {
2026-06-22T00:46:25.6607197Z           "complete": true,
2026-06-22T00:46:25.6607292Z           "evidence": [
2026-06-22T00:46:25.6607378Z             {
2026-06-22T00:46:25.6607494Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T00:46:25.6607569Z               "line": 320
2026-06-22T00:46:25.6607654Z             }
2026-06-22T00:46:25.6607735Z           ]
2026-06-22T00:46:25.6607818Z         }
2026-06-22T00:46:25.6607898Z       }
2026-06-22T00:46:25.6607983Z     },
2026-06-22T00:46:25.6608075Z     {
2026-06-22T00:46:25.6608165Z       "id": "REQ-REL-1",
2026-06-22T00:46:25.6608522Z       "title": "spt-releases publish-target repo: README public face, licensing split, Pages docs at the permanent lapse-proof canonical URL (ADR-0014)",
2026-06-22T00:46:25.6608637Z       "requiredStages": [
2026-06-22T00:46:25.6608719Z         "doc",
2026-06-22T00:46:25.6608809Z         "impl"
2026-06-22T00:46:25.6608889Z       ],
2026-06-22T00:46:25.6609062Z       "stages": {
2026-06-22T00:46:25.6609138Z         "doc": {
2026-06-22T00:46:25.6609238Z           "complete": true,
2026-06-22T00:46:25.6609329Z           "evidence": [
2026-06-22T00:46:25.6609434Z             {
2026-06-22T00:46:25.6609651Z               "path": "docs/adr/0014-publish-target-repo-and-lapse-proof-canonical-url.md",
2026-06-22T00:46:25.6609733Z               "line": 3
2026-06-22T00:46:25.6609824Z             }
2026-06-22T00:46:25.6609904Z           ]
2026-06-22T00:46:25.6609990Z         },
2026-06-22T00:46:25.6610072Z         "impl": {
2026-06-22T00:46:25.6610162Z           "complete": true,
2026-06-22T00:46:25.6610247Z           "evidence": [
2026-06-22T00:46:25.6610334Z             {
2026-06-22T00:46:25.6610463Z               "path": ".github/workflows/docs-publish.yml",
2026-06-22T00:46:25.6610557Z               "line": 11
2026-06-22T00:46:25.6610639Z             },
2026-06-22T00:46:25.6610724Z             {
2026-06-22T00:46:25.6610829Z               "path": "crates/xtask/src/main.rs",
2026-06-22T00:46:25.6610919Z               "line": 265
2026-06-22T00:46:25.6611002Z             }
2026-06-22T00:46:25.6611096Z           ]
2026-06-22T00:46:25.6611177Z         },
2026-06-22T00:46:25.6611259Z         "int": {
2026-06-22T00:46:25.6611364Z           "complete": false,
2026-06-22T00:46:25.6611454Z           "evidence": []
2026-06-22T00:46:25.6611540Z         },
2026-06-22T00:46:25.6611622Z         "unit": {
2026-06-22T00:46:25.6611717Z           "complete": false,
2026-06-22T00:46:25.6611801Z           "evidence": []
2026-06-22T00:46:25.6611882Z         }
2026-06-22T00:46:25.6611968Z       }
2026-06-22T00:46:25.6612048Z     },
2026-06-22T00:46:25.6612132Z     {
2026-06-22T00:46:25.6612334Z       "id": "REQ-REL-2",
2026-06-22T00:46:25.6612799Z       "title": "Release asset set consumable by the self-updater: platform binaries, SHA256SUMS, SignedRelease metadata, manifest schema, mock-adapter zip; tag-triggered cross-repo pipeline",
2026-06-22T00:46:25.6612986Z       "requiredStages": [
2026-06-22T00:46:25.6613076Z         "impl",
2026-06-22T00:46:25.6613167Z         "int"
2026-06-22T00:46:25.6613249Z       ],
2026-06-22T00:46:25.6613334Z       "stages": {
2026-06-22T00:46:25.6613420Z         "doc": {
2026-06-22T00:46:25.6613506Z           "complete": true,
2026-06-22T00:46:25.6613587Z           "evidence": [
2026-06-22T00:46:25.6613677Z             {
2026-06-22T00:46:25.6613786Z               "path": "docs/RELEASE-RUNBOOK.md",
2026-06-22T00:46:25.6613869Z               "line": 6
2026-06-22T00:46:25.6613954Z             }
2026-06-22T00:46:25.6614045Z           ]
2026-06-22T00:46:25.6614126Z         },
2026-06-22T00:46:25.6614208Z         "impl": {
2026-06-22T00:46:25.6614326Z           "complete": true,
2026-06-22T00:46:25.6614416Z           "evidence": [
2026-06-22T00:46:25.6614499Z             {
2026-06-22T00:46:25.6614621Z               "path": ".github/workflows/release.yml",
2026-06-22T00:46:25.6614706Z               "line": 16
2026-06-22T00:46:25.6614787Z             },
2026-06-22T00:46:25.6614868Z             {
2026-06-22T00:46:25.6614971Z               "path": "crates/xtask/src/main.rs",
2026-06-22T00:46:25.6615056Z               "line": 352
2026-06-22T00:46:25.6615138Z             },
2026-06-22T00:46:25.6615224Z             {
2026-06-22T00:46:25.6615328Z               "path": "crates/xtask/src/main.rs",
2026-06-22T00:46:25.6615423Z               "line": 426
2026-06-22T00:46:25.6615501Z             },
2026-06-22T00:46:25.6615582Z             {
2026-06-22T00:46:25.6615685Z               "path": "crates/xtask/src/main.rs",
2026-06-22T00:46:25.6615763Z               "line": 588
2026-06-22T00:46:25.6615849Z             },
2026-06-22T00:46:25.6615921Z             {
2026-06-22T00:46:25.6616024Z               "path": "crates/xtask/src/main.rs",
2026-06-22T00:46:25.6616111Z               "line": 720
2026-06-22T00:46:25.6616206Z             }
2026-06-22T00:46:25.6616292Z           ]
2026-06-22T00:46:25.6616373Z         },
2026-06-22T00:46:25.6616455Z         "int": {
2026-06-22T00:46:25.6616549Z           "complete": true,
2026-06-22T00:46:25.6616639Z           "evidence": [
2026-06-22T00:46:25.6616727Z             {
2026-06-22T00:46:25.6616864Z               "path": "crates/spt/tests/release_verify_e2e.rs",
2026-06-22T00:46:25.6616959Z               "line": 13
2026-06-22T00:46:25.6617037Z             }
2026-06-22T00:46:25.6617127Z           ]
2026-06-22T00:46:25.6617211Z         },
2026-06-22T00:46:25.6617301Z         "unit": {
2026-06-22T00:46:25.6617392Z           "complete": false,
2026-06-22T00:46:25.6617491Z           "evidence": []
2026-06-22T00:46:25.6617580Z         }
2026-06-22T00:46:25.6617661Z       }
2026-06-22T00:46:25.6617753Z     },
2026-06-22T00:46:25.6617839Z     {
2026-06-22T00:46:25.6617938Z       "id": "REQ-REL-3",
2026-06-22T00:46:25.6618354Z       "title": "Two-key release-signing trust anchor: primary + offline never-used recovery, both pubkeys embedded in the binary's trusted set, manual local signing (ADR-0015)",
2026-06-22T00:46:25.6618453Z       "requiredStages": [
2026-06-22T00:46:25.6618543Z         "impl",
2026-06-22T00:46:25.6618630Z         "unit"
2026-06-22T00:46:25.6618716Z       ],
2026-06-22T00:46:25.6618796Z       "stages": {
2026-06-22T00:46:25.6618877Z         "doc": {
2026-06-22T00:46:25.6619031Z           "complete": false,
2026-06-22T00:46:25.6619121Z           "evidence": []
2026-06-22T00:46:25.6619211Z         },
2026-06-22T00:46:25.6619293Z         "impl": {
2026-06-22T00:46:25.6619393Z           "complete": true,
2026-06-22T00:46:25.6619474Z           "evidence": [
2026-06-22T00:46:25.6619569Z             {
2026-06-22T00:46:25.6619698Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T00:46:25.6619788Z               "line": 237
2026-06-22T00:46:25.6619985Z             },
2026-06-22T00:46:25.6620060Z             {
2026-06-22T00:46:25.6620274Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T00:46:25.6620375Z               "line": 289
2026-06-22T00:46:25.6620454Z             },
2026-06-22T00:46:25.6620550Z             {
2026-06-22T00:46:25.6620660Z               "path": "crates/xtask/src/main.rs",
2026-06-22T00:46:25.6620755Z               "line": 329
2026-06-22T00:46:25.6620840Z             },
2026-06-22T00:46:25.6620923Z             {
2026-06-22T00:46:25.6621023Z               "path": "crates/xtask/src/main.rs",
2026-06-22T00:46:25.6621108Z               "line": 353
2026-06-22T00:46:25.6621199Z             },
2026-06-22T00:46:25.6621285Z             {
2026-06-22T00:46:25.6621380Z               "path": "crates/xtask/src/main.rs",
2026-06-22T00:46:25.6621470Z               "line": 394
2026-06-22T00:46:25.6621567Z             }
2026-06-22T00:46:25.6621642Z           ]
2026-06-22T00:46:25.6621728Z         },
2026-06-22T00:46:25.6621824Z         "int": {
2026-06-22T00:46:25.6621905Z           "complete": false,
2026-06-22T00:46:25.6621999Z           "evidence": []
2026-06-22T00:46:25.6622076Z         },
2026-06-22T00:46:25.6622167Z         "unit": {
2026-06-22T00:46:25.6622257Z           "complete": true,
2026-06-22T00:46:25.6622352Z           "evidence": [
2026-06-22T00:46:25.6622442Z             {
2026-06-22T00:46:25.6622552Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T00:46:25.6622640Z               "line": 1045
2026-06-22T00:46:25.6622725Z             },
2026-06-22T00:46:25.6622812Z             {
2026-06-22T00:46:25.6622913Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T00:46:25.6623012Z               "line": 1104
2026-06-22T00:46:25.6623093Z             }
2026-06-22T00:46:25.6623179Z           ]
2026-06-22T00:46:25.6623265Z         }
2026-06-22T00:46:25.6623341Z       }
2026-06-22T00:46:25.6623427Z     },
2026-06-22T00:46:25.6623513Z     {
2026-06-22T00:46:25.6623617Z       "id": "REQ-RUN-PICKER",
2026-06-22T00:46:25.6628221Z       "title": "Interactive `spt endpoint run` picker (ratatui TUI): bare `spt endpoint run` (no --adapter/--id) enters an in-process picker (flags-present = the REQ-HOST-RUN-1 non-interactive path, untouched). Layer 1 picks kind (Create new | Pick existing). Create-new: choose a registered kind=\"harness\" adapter with its shipped+local profiles tree-nested (registry::registered / manifest.profiles / local_profile_names) → enter a charset-validated id → start. Pick-existing: category select (left/right) over [<cwd-project> | Local node | Subnet], endpoints grouped + alphabetically sorted per category, a status square per endpoint (online green ■ / offline gray ▢ — the blue \"attached\" tri-state + Kick are DEFERRED to a broker attach-presence slice, M12-W2-RULING Q1), type-to-filter (`/`, nucleo-matcher), a pinned keybind legend, and a right-half two-pane description (harness adapter:profile · best-effort project history newest→oldest from the contextstore p-<project> branches, empty-if-none · `spt endpoint description`). Confirm layer offers status-dependent options — Attach/Start/View (rc pump / cmd_endpoint_run) · Instantiate-locally (remote) · Change-harness-adapter (offline) · Fork (cmd_fork) · Resume-from-history (offline+LOCAL only; enumerate spt_store::sessions::last_k, titles `<project> @ <ts> (…id5)`, feed session_id → cmd_endpoint_run --resume). A single action enum is the source of truth so a future tap-mode (phone PTY) layers on without re-coupling to keybinds. EVERY terminal action routes through cmd_endpoint_run / existing CLI fns — no second bringup path.",
2026-06-22T00:46:25.6628376Z       "requiredStages": [
2026-06-22T00:46:25.6628464Z         "doc",
2026-06-22T00:46:25.6628550Z         "impl",
2026-06-22T00:46:25.6628638Z         "unit"
2026-06-22T00:46:25.6628719Z       ],
2026-06-22T00:46:25.6628803Z       "stages": {
2026-06-22T00:46:25.6628885Z         "doc": {
2026-06-22T00:46:25.6629061Z           "complete": true,
2026-06-22T00:46:25.6629276Z           "evidence": [
2026-06-22T00:46:25.6629356Z             {
2026-06-22T00:46:25.6629553Z               "path": "CONTEXT.md",
2026-06-22T00:46:25.6629643Z               "line": 349
2026-06-22T00:46:25.6629724Z             }
2026-06-22T00:46:25.6629805Z           ]
2026-06-22T00:46:25.6629887Z         },
2026-06-22T00:46:25.6629981Z         "impl": {
2026-06-22T00:46:25.6630071Z           "complete": true,
2026-06-22T00:46:25.6630164Z           "evidence": [
2026-06-22T00:46:25.6630249Z             {
2026-06-22T00:46:25.6630363Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6630449Z               "line": 958
2026-06-22T00:46:25.6630536Z             },
2026-06-22T00:46:25.6630625Z             {
2026-06-22T00:46:25.6630724Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6630815Z               "line": 968
2026-06-22T00:46:25.6630906Z             },
2026-06-22T00:46:25.6630986Z             {
2026-06-22T00:46:25.6631100Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T00:46:25.6631197Z               "line": 9
2026-06-22T00:46:25.6631292Z             },
2026-06-22T00:46:25.6631372Z             {
2026-06-22T00:46:25.6631493Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T00:46:25.6631578Z               "line": 67
2026-06-22T00:46:25.6631663Z             },
2026-06-22T00:46:25.6631754Z             {
2026-06-22T00:46:25.6631864Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-22T00:46:25.6631954Z               "line": 16
2026-06-22T00:46:25.6632035Z             },
2026-06-22T00:46:25.6632132Z             {
2026-06-22T00:46:25.6632245Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-22T00:46:25.6632331Z               "line": 254
2026-06-22T00:46:25.6632423Z             },
2026-06-22T00:46:25.6632498Z             {
2026-06-22T00:46:25.6632621Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T00:46:25.6632708Z               "line": 11
2026-06-22T00:46:25.6632790Z             },
2026-06-22T00:46:25.6632874Z             {
2026-06-22T00:46:25.6632983Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T00:46:25.6633088Z               "line": 115
2026-06-22T00:46:25.6633172Z             },
2026-06-22T00:46:25.6633253Z             {
2026-06-22T00:46:25.6633362Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T00:46:25.6633454Z               "line": 554
2026-06-22T00:46:25.6633539Z             },
2026-06-22T00:46:25.6633619Z             {
2026-06-22T00:46:25.6633730Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T00:46:25.6633821Z               "line": 635
2026-06-22T00:46:25.6633896Z             },
2026-06-22T00:46:25.6633977Z             {
2026-06-22T00:46:25.6634088Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T00:46:25.6634182Z               "line": 694
2026-06-22T00:46:25.6634263Z             },
2026-06-22T00:46:25.6634346Z             {
2026-06-22T00:46:25.6634455Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T00:46:25.6634554Z               "line": 747
2026-06-22T00:46:25.6634645Z             },
2026-06-22T00:46:25.6634726Z             {
2026-06-22T00:46:25.6634835Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T00:46:25.6634926Z               "line": 785
2026-06-22T00:46:25.6635009Z             },
2026-06-22T00:46:25.6635093Z             {
2026-06-22T00:46:25.6635208Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T00:46:25.6635295Z               "line": 8
2026-06-22T00:46:25.6635380Z             }
2026-06-22T00:46:25.6635465Z           ]
2026-06-22T00:46:25.6635546Z         },
2026-06-22T00:46:25.6635629Z         "int": {
2026-06-22T00:46:25.6635713Z           "complete": false,
2026-06-22T00:46:25.6635803Z           "evidence": []
2026-06-22T00:46:25.6635888Z         },
2026-06-22T00:46:25.6635970Z         "unit": {
2026-06-22T00:46:25.6636068Z           "complete": true,
2026-06-22T00:46:25.6636153Z           "evidence": [
2026-06-22T00:46:25.6636350Z             {
2026-06-22T00:46:25.6636453Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6636626Z               "line": 7638
2026-06-22T00:46:25.6636721Z             },
2026-06-22T00:46:25.6636806Z             {
2026-06-22T00:46:25.6636912Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6636993Z               "line": 7649
2026-06-22T00:46:25.6637083Z             },
2026-06-22T00:46:25.6637164Z             {
2026-06-22T00:46:25.6637274Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T00:46:25.6637369Z               "line": 879
2026-06-22T00:46:25.6637454Z             },
2026-06-22T00:46:25.6637542Z             {
2026-06-22T00:46:25.6637650Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T00:46:25.6637746Z               "line": 928
2026-06-22T00:46:25.6637832Z             },
2026-06-22T00:46:25.6637918Z             {
2026-06-22T00:46:25.6638036Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T00:46:25.6638123Z               "line": 979
2026-06-22T00:46:25.6638205Z             },
2026-06-22T00:46:25.6638290Z             {
2026-06-22T00:46:25.6638412Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T00:46:25.6638488Z               "line": 996
2026-06-22T00:46:25.6638574Z             },
2026-06-22T00:46:25.6638653Z             {
2026-06-22T00:46:25.6638762Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T00:46:25.6638844Z               "line": 1005
2026-06-22T00:46:25.6638931Z             },
2026-06-22T00:46:25.6639101Z             {
2026-06-22T00:46:25.6639217Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T00:46:25.6639302Z               "line": 1016
2026-06-22T00:46:25.6639382Z             },
2026-06-22T00:46:25.6639469Z             {
2026-06-22T00:46:25.6639588Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T00:46:25.6639664Z               "line": 1038
2026-06-22T00:46:25.6639750Z             },
2026-06-22T00:46:25.6639832Z             {
2026-06-22T00:46:25.6639955Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T00:46:25.6640050Z               "line": 1057
2026-06-22T00:46:25.6640137Z             },
2026-06-22T00:46:25.6640217Z             {
2026-06-22T00:46:25.6640321Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T00:46:25.6640419Z               "line": 1107
2026-06-22T00:46:25.6640490Z             },
2026-06-22T00:46:25.6640589Z             {
2026-06-22T00:46:25.6640704Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T00:46:25.6640791Z               "line": 1136
2026-06-22T00:46:25.6640875Z             },
2026-06-22T00:46:25.6640961Z             {
2026-06-22T00:46:25.6641076Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T00:46:25.6641180Z               "line": 1149
2026-06-22T00:46:25.6641255Z             },
2026-06-22T00:46:25.6641336Z             {
2026-06-22T00:46:25.6641442Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T00:46:25.6641542Z               "line": 1215
2026-06-22T00:46:25.6641622Z             },
2026-06-22T00:46:25.6641704Z             {
2026-06-22T00:46:25.6641814Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T00:46:25.6641903Z               "line": 1256
2026-06-22T00:46:25.6641990Z             },
2026-06-22T00:46:25.6642067Z             {
2026-06-22T00:46:25.6642186Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T00:46:25.6642266Z               "line": 1272
2026-06-22T00:46:25.6642343Z             },
2026-06-22T00:46:25.6642429Z             {
2026-06-22T00:46:25.6642538Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T00:46:25.6642624Z               "line": 491
2026-06-22T00:46:25.6642706Z             },
2026-06-22T00:46:25.6642795Z             {
2026-06-22T00:46:25.6642905Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T00:46:25.6642997Z               "line": 506
2026-06-22T00:46:25.6643077Z             },
2026-06-22T00:46:25.6643153Z             {
2026-06-22T00:46:25.6643364Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T00:46:25.6643453Z               "line": 524
2026-06-22T00:46:25.6643634Z             },
2026-06-22T00:46:25.6643719Z             {
2026-06-22T00:46:25.6643827Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T00:46:25.6643918Z               "line": 546
2026-06-22T00:46:25.6643999Z             },
2026-06-22T00:46:25.6644089Z             {
2026-06-22T00:46:25.6644198Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T00:46:25.6644290Z               "line": 556
2026-06-22T00:46:25.6644376Z             },
2026-06-22T00:46:25.6644461Z             {
2026-06-22T00:46:25.6644566Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T00:46:25.6644652Z               "line": 582
2026-06-22T00:46:25.6644733Z             }
2026-06-22T00:46:25.6644819Z           ]
2026-06-22T00:46:25.6644896Z         }
2026-06-22T00:46:25.6644976Z       }
2026-06-22T00:46:25.6645067Z     },
2026-06-22T00:46:25.6645152Z     {
2026-06-22T00:46:25.6645249Z       "id": "REQ-RUN-SHORTCUT",
2026-06-22T00:46:25.6649942Z       "title": "`<basename>-<id>` launcher shortcut generation (picker `s` keybind, M12-W2-T2.4): from any pre-start options set the picker writes/updates a `<basename>-<id>` launcher at the project root baking the current selection's non-interactive `spt endpoint run` flags (terminal actions only: adapter[:profile] + id + (create|resume) + (start|attach|view); Kick/Instantiate/Change-adapter/Fork are interactive-only, not bakeable). BASENAME IS A PARAMETER (operator rev. 2026-06-14): harness-agnostic spt-core defaults to `spt` (→ `spt-<id>`); an adapter/flow OVERRIDES it (spt-claude-code → `cc`), so spt-core NEVER bakes `cc` (a harness name) into itself. The basename must be a DISTINCT token, never bare `spt` (a `spt.cmd` would shadow the real `spt.exe` only under cmd.exe cwd-first search, silently no-op in PowerShell/Unix, and self-recurse). The script is the CURRENT OS's native form — `.cmd` on Windows (NOT `.ps1`: default PATHEXT excludes `.ps1` so a bare/ext-less name never resolves one; `.cmd` is PATHEXT-resolvable), POSIX `sh` (+chmod +x) on Unix (a single portable form can't be both). The generated header documents the invocation reality (cmd.exe bare `<name>` in the project dir / PowerShell `.\\<name>` / Unix `./<name>`; a truly-bare basename on PATH = a PATH-installed launcher, `/spt:setup`'s job). Overwrite is SENTINEL-guarded: the generator writes + checks a generated-by header marker — it overwrites its own prior output freely, but REFUSES + warns if a same-named file lacks the sentinel (never clobber a user file). Requires the additive `--create` flag on `Run{}` (the default-fresh made explicit; N-1-safe).",
2026-06-22T00:46:25.6650063Z       "requiredStages": [
2026-06-22T00:46:25.6650153Z         "doc",
2026-06-22T00:46:25.6650238Z         "impl",
2026-06-22T00:46:25.6650320Z         "unit"
2026-06-22T00:46:25.6650401Z       ],
2026-06-22T00:46:25.6650486Z       "stages": {
2026-06-22T00:46:25.6650567Z         "doc": {
2026-06-22T00:46:25.6650664Z           "complete": true,
2026-06-22T00:46:25.6650759Z           "evidence": [
2026-06-22T00:46:25.6650830Z             {
2026-06-22T00:46:25.6650925Z               "path": "CONTEXT.md",
2026-06-22T00:46:25.6651016Z               "line": 390
2026-06-22T00:46:25.6651102Z             }
2026-06-22T00:46:25.6651183Z           ]
2026-06-22T00:46:25.6651274Z         },
2026-06-22T00:46:25.6651355Z         "impl": {
2026-06-22T00:46:25.6651445Z           "complete": true,
2026-06-22T00:46:25.6651535Z           "evidence": [
2026-06-22T00:46:25.6651618Z             {
2026-06-22T00:46:25.6651745Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T00:46:25.6651835Z               "line": 39
2026-06-22T00:46:25.6651925Z             },
2026-06-22T00:46:25.6652012Z             {
2026-06-22T00:46:25.6652130Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T00:46:25.6652216Z               "line": 79
2026-06-22T00:46:25.6652408Z             },
2026-06-22T00:46:25.6652502Z             {
2026-06-22T00:46:25.6652613Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T00:46:25.6652797Z               "line": 162
2026-06-22T00:46:25.6652884Z             }
2026-06-22T00:46:25.6652970Z           ]
2026-06-22T00:46:25.6653061Z         },
2026-06-22T00:46:25.6653141Z         "int": {
2026-06-22T00:46:25.6653242Z           "complete": false,
2026-06-22T00:46:25.6653337Z           "evidence": []
2026-06-22T00:46:25.6653422Z         },
2026-06-22T00:46:25.6653504Z         "unit": {
2026-06-22T00:46:25.6653591Z           "complete": true,
2026-06-22T00:46:25.6653689Z           "evidence": [
2026-06-22T00:46:25.6653770Z             {
2026-06-22T00:46:25.6653891Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T00:46:25.6653980Z               "line": 206
2026-06-22T00:46:25.6654065Z             },
2026-06-22T00:46:25.6654146Z             {
2026-06-22T00:46:25.6654251Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T00:46:25.6654349Z               "line": 222
2026-06-22T00:46:25.6654430Z             },
2026-06-22T00:46:25.6654516Z             {
2026-06-22T00:46:25.6654631Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T00:46:25.6654711Z               "line": 238
2026-06-22T00:46:25.6654797Z             },
2026-06-22T00:46:25.6654879Z             {
2026-06-22T00:46:25.6654997Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T00:46:25.6655087Z               "line": 251
2026-06-22T00:46:25.6655185Z             },
2026-06-22T00:46:25.6655260Z             {
2026-06-22T00:46:25.6655369Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T00:46:25.6655456Z               "line": 258
2026-06-22T00:46:25.6655546Z             }
2026-06-22T00:46:25.6655632Z           ]
2026-06-22T00:46:25.6655703Z         }
2026-06-22T00:46:25.6655795Z       }
2026-06-22T00:46:25.6655884Z     },
2026-06-22T00:46:25.6655965Z     {
2026-06-22T00:46:25.6656076Z       "id": "REQ-SEAM-ACTIVITY",
2026-06-22T00:46:25.6656256Z       "title": "Activity/idle reported via api sentinels, not PTY quiescence",
2026-06-22T00:46:25.6656357Z       "requiredStages": [
2026-06-22T00:46:25.6656444Z         "impl",
2026-06-22T00:46:25.6656533Z         "unit"
2026-06-22T00:46:25.6656614Z       ],
2026-06-22T00:46:25.6656696Z       "stages": {
2026-06-22T00:46:25.6656787Z         "doc": {
2026-06-22T00:46:25.6656875Z           "complete": false,
2026-06-22T00:46:25.6656961Z           "evidence": []
2026-06-22T00:46:25.6657042Z         },
2026-06-22T00:46:25.6657137Z         "impl": {
2026-06-22T00:46:25.6657230Z           "complete": true,
2026-06-22T00:46:25.6657320Z           "evidence": [
2026-06-22T00:46:25.6657402Z             {
2026-06-22T00:46:25.6657521Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T00:46:25.6657607Z               "line": 18
2026-06-22T00:46:25.6657684Z             },
2026-06-22T00:46:25.6657770Z             {
2026-06-22T00:46:25.6657893Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T00:46:25.6657979Z               "line": 35
2026-06-22T00:46:25.6658070Z             },
2026-06-22T00:46:25.6658147Z             {
2026-06-22T00:46:25.6658265Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T00:46:25.6658347Z               "line": 72
2026-06-22T00:46:25.6658432Z             }
2026-06-22T00:46:25.6658513Z           ]
2026-06-22T00:46:25.6658599Z         },
2026-06-22T00:46:25.6658681Z         "int": {
2026-06-22T00:46:25.6658770Z           "complete": false,
2026-06-22T00:46:25.6658866Z           "evidence": []
2026-06-22T00:46:25.6658986Z         },
2026-06-22T00:46:25.6659071Z         "unit": {
2026-06-22T00:46:25.6659171Z           "complete": true,
2026-06-22T00:46:25.6659253Z           "evidence": [
2026-06-22T00:46:25.6659335Z             {
2026-06-22T00:46:25.6659452Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T00:46:25.6662924Z               "line": 239
2026-06-22T00:46:25.6663173Z             },
2026-06-22T00:46:25.6663263Z             {
2026-06-22T00:46:25.6663391Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T00:46:25.6663596Z               "line": 256
2026-06-22T00:46:25.6663682Z             },
2026-06-22T00:46:25.6663764Z             {
2026-06-22T00:46:25.6663888Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T00:46:25.6663973Z               "line": 265
2026-06-22T00:46:25.6664055Z             }
2026-06-22T00:46:25.6664141Z           ]
2026-06-22T00:46:25.6664221Z         }
2026-06-22T00:46:25.6664302Z       }
2026-06-22T00:46:25.6664379Z     },
2026-06-22T00:46:25.6664470Z     {
2026-06-22T00:46:25.6664559Z       "id": "REQ-SEAM-CAPABILITY",
2026-06-22T00:46:25.6664721Z       "title": "Hostable endpoint-types capability declaration",
2026-06-22T00:46:25.6664816Z       "requiredStages": [
2026-06-22T00:46:25.6664900Z         "impl",
2026-06-22T00:46:25.6664985Z         "unit"
2026-06-22T00:46:25.6665067Z       ],
2026-06-22T00:46:25.6665163Z       "stages": {
2026-06-22T00:46:25.6665238Z         "doc": {
2026-06-22T00:46:25.6665333Z           "complete": false,
2026-06-22T00:46:25.6665425Z           "evidence": []
2026-06-22T00:46:25.6665511Z         },
2026-06-22T00:46:25.6665590Z         "impl": {
2026-06-22T00:46:25.6665672Z           "complete": true,
2026-06-22T00:46:25.6665768Z           "evidence": [
2026-06-22T00:46:25.6665849Z             {
2026-06-22T00:46:25.6665977Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.6666074Z               "line": 598
2026-06-22T00:46:25.6666159Z             }
2026-06-22T00:46:25.6666244Z           ]
2026-06-22T00:46:25.6666326Z         },
2026-06-22T00:46:25.6666412Z         "int": {
2026-06-22T00:46:25.6666507Z           "complete": false,
2026-06-22T00:46:25.6666597Z           "evidence": []
2026-06-22T00:46:25.6666684Z         },
2026-06-22T00:46:25.6666764Z         "unit": {
2026-06-22T00:46:25.6666855Z           "complete": true,
2026-06-22T00:46:25.6666936Z           "evidence": [
2026-06-22T00:46:25.6667018Z             {
2026-06-22T00:46:25.6667130Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.6667227Z               "line": 967
2026-06-22T00:46:25.6667314Z             }
2026-06-22T00:46:25.6667399Z           ]
2026-06-22T00:46:25.6667483Z         }
2026-06-22T00:46:25.6667563Z       }
2026-06-22T00:46:25.6667650Z     },
2026-06-22T00:46:25.6667739Z     {
2026-06-22T00:46:25.6667843Z       "id": "REQ-SEAM-HISTORY",
2026-06-22T00:46:25.6668030Z       "title": "History subsystem (fetcher / locate-normalize / native store)",
2026-06-22T00:46:25.6668119Z       "requiredStages": [
2026-06-22T00:46:25.6668195Z         "impl",
2026-06-22T00:46:25.6668283Z         "unit",
2026-06-22T00:46:25.6668368Z         "int"
2026-06-22T00:46:25.6668443Z       ],
2026-06-22T00:46:25.6668529Z       "stages": {
2026-06-22T00:46:25.6668612Z         "doc": {
2026-06-22T00:46:25.6668697Z           "complete": false,
2026-06-22T00:46:25.6668796Z           "evidence": []
2026-06-22T00:46:25.6668888Z         },
2026-06-22T00:46:25.6669055Z         "impl": {
2026-06-22T00:46:25.6669154Z           "complete": true,
2026-06-22T00:46:25.6669251Z           "evidence": [
2026-06-22T00:46:25.6669340Z             {
2026-06-22T00:46:25.6669445Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T00:46:25.6669537Z               "line": 24
2026-06-22T00:46:25.6669617Z             },
2026-06-22T00:46:25.6669702Z             {
2026-06-22T00:46:25.6669818Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T00:46:25.6669918Z               "line": 22
2026-06-22T00:46:25.6669993Z             }
2026-06-22T00:46:25.6670074Z           ]
2026-06-22T00:46:25.6670159Z         },
2026-06-22T00:46:25.6670245Z         "int": {
2026-06-22T00:46:25.6670343Z           "complete": true,
2026-06-22T00:46:25.6670423Z           "evidence": [
2026-06-22T00:46:25.6670510Z             {
2026-06-22T00:46:25.6670630Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T00:46:25.6670825Z               "line": 260
2026-06-22T00:46:25.6670916Z             }
2026-06-22T00:46:25.6671082Z           ]
2026-06-22T00:46:25.6671164Z         },
2026-06-22T00:46:25.6671254Z         "unit": {
2026-06-22T00:46:25.6671349Z           "complete": true,
2026-06-22T00:46:25.6671440Z           "evidence": [
2026-06-22T00:46:25.6671516Z             {
2026-06-22T00:46:25.6671635Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T00:46:25.6671726Z               "line": 171
2026-06-22T00:46:25.6671817Z             },
2026-06-22T00:46:25.6671897Z             {
2026-06-22T00:46:25.6672002Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T00:46:25.6672094Z               "line": 200
2026-06-22T00:46:25.6672174Z             },
2026-06-22T00:46:25.6672260Z             {
2026-06-22T00:46:25.6672350Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T00:46:25.6672447Z               "line": 220
2026-06-22T00:46:25.6672531Z             },
2026-06-22T00:46:25.6672618Z             {
2026-06-22T00:46:25.6672723Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T00:46:25.6672818Z               "line": 199
2026-06-22T00:46:25.6672898Z             },
2026-06-22T00:46:25.6672978Z             {
2026-06-22T00:46:25.6673084Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T00:46:25.6673166Z               "line": 219
2026-06-22T00:46:25.6673251Z             },
2026-06-22T00:46:25.6673327Z             {
2026-06-22T00:46:25.6673437Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T00:46:25.6673528Z               "line": 244
2026-06-22T00:46:25.6673603Z             },
2026-06-22T00:46:25.6673680Z             {
2026-06-22T00:46:25.6673795Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T00:46:25.6673880Z               "line": 276
2026-06-22T00:46:25.6673966Z             },
2026-06-22T00:46:25.6674048Z             {
2026-06-22T00:46:25.6674157Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T00:46:25.6674247Z               "line": 297
2026-06-22T00:46:25.6674339Z             },
2026-06-22T00:46:25.6674429Z             {
2026-06-22T00:46:25.6674538Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T00:46:25.6674629Z               "line": 324
2026-06-22T00:46:25.6674715Z             }
2026-06-22T00:46:25.6674800Z           ]
2026-06-22T00:46:25.6674881Z         }
2026-06-22T00:46:25.6674968Z       }
2026-06-22T00:46:25.6675044Z     },
2026-06-22T00:46:25.6675134Z     {
2026-06-22T00:46:25.6675233Z       "id": "REQ-SEAM-INJECT",
2026-06-22T00:46:25.6675399Z       "title": "inject-input methods configurable per activity-state",
2026-06-22T00:46:25.6675493Z       "requiredStages": [
2026-06-22T00:46:25.6675578Z         "impl",
2026-06-22T00:46:25.6675665Z         "unit"
2026-06-22T00:46:25.6675752Z       ],
2026-06-22T00:46:25.6675841Z       "stages": {
2026-06-22T00:46:25.6675932Z         "doc": {
2026-06-22T00:46:25.6676023Z           "complete": false,
2026-06-22T00:46:25.6676127Z           "evidence": []
2026-06-22T00:46:25.6676208Z         },
2026-06-22T00:46:25.6676295Z         "impl": {
2026-06-22T00:46:25.6676395Z           "complete": true,
2026-06-22T00:46:25.6676484Z           "evidence": [
2026-06-22T00:46:25.6676572Z             {
2026-06-22T00:46:25.6676672Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T00:46:25.6676762Z               "line": 19
2026-06-22T00:46:25.6676843Z             },
2026-06-22T00:46:25.6676934Z             {
2026-06-22T00:46:25.6677043Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T00:46:25.6677128Z               "line": 111
2026-06-22T00:46:25.6677216Z             }
2026-06-22T00:46:25.6677301Z           ]
2026-06-22T00:46:25.6677381Z         },
2026-06-22T00:46:25.6677467Z         "int": {
2026-06-22T00:46:25.6677554Z           "complete": false,
2026-06-22T00:46:25.6677639Z           "evidence": []
2026-06-22T00:46:25.6677735Z         },
2026-06-22T00:46:25.6677821Z         "unit": {
2026-06-22T00:46:25.6677996Z           "complete": true,
2026-06-22T00:46:25.6678081Z           "evidence": [
2026-06-22T00:46:25.6678234Z             {
2026-06-22T00:46:25.6678337Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T00:46:25.6678422Z               "line": 345
2026-06-22T00:46:25.6678508Z             },
2026-06-22T00:46:25.6678594Z             {
2026-06-22T00:46:25.6678703Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T00:46:25.6678794Z               "line": 365
2026-06-22T00:46:25.6678876Z             }
2026-06-22T00:46:25.6679022Z           ]
2026-06-22T00:46:25.6679099Z         }
2026-06-22T00:46:25.6679186Z       }
2026-06-22T00:46:25.6679267Z     },
2026-06-22T00:46:25.6679347Z     {
2026-06-22T00:46:25.6679453Z       "id": "REQ-SEAM-POSTSPAWN",
2026-06-22T00:46:25.6679576Z       "title": "post-spawn / api bind seam with boot nonce",
2026-06-22T00:46:25.6679676Z       "requiredStages": [
2026-06-22T00:46:25.6679758Z         "impl",
2026-06-22T00:46:25.6679854Z         "unit"
2026-06-22T00:46:25.6679933Z       ],
2026-06-22T00:46:25.6680015Z       "stages": {
2026-06-22T00:46:25.6680106Z         "doc": {
2026-06-22T00:46:25.6680201Z           "complete": false,
2026-06-22T00:46:25.6680296Z           "evidence": []
2026-06-22T00:46:25.6680378Z         },
2026-06-22T00:46:25.6680460Z         "impl": {
2026-06-22T00:46:25.6680553Z           "complete": true,
2026-06-22T00:46:25.6680634Z           "evidence": [
2026-06-22T00:46:25.6680715Z             {
2026-06-22T00:46:25.6680833Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.6680917Z               "line": 18
2026-06-22T00:46:25.6680993Z             },
2026-06-22T00:46:25.6681070Z             {
2026-06-22T00:46:25.6681185Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.6681265Z               "line": 431
2026-06-22T00:46:25.6681347Z             }
2026-06-22T00:46:25.6681428Z           ]
2026-06-22T00:46:25.6681514Z         },
2026-06-22T00:46:25.6681594Z         "int": {
2026-06-22T00:46:25.6681685Z           "complete": false,
2026-06-22T00:46:25.6681785Z           "evidence": []
2026-06-22T00:46:25.6681866Z         },
2026-06-22T00:46:25.6681952Z         "unit": {
2026-06-22T00:46:25.6682039Z           "complete": true,
2026-06-22T00:46:25.6682138Z           "evidence": [
2026-06-22T00:46:25.6682223Z             {
2026-06-22T00:46:25.6682334Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.6682424Z               "line": 881
2026-06-22T00:46:25.6682505Z             },
2026-06-22T00:46:25.6682586Z             {
2026-06-22T00:46:25.6682693Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.6682786Z               "line": 891
2026-06-22T00:46:25.6682867Z             }
2026-06-22T00:46:25.6682950Z           ]
2026-06-22T00:46:25.6683036Z         }
2026-06-22T00:46:25.6683120Z       }
2026-06-22T00:46:25.6683206Z     },
2026-06-22T00:46:25.6683288Z     {
2026-06-22T00:46:25.6683392Z       "id": "REQ-SEAM-PSYCHE",
2026-06-22T00:46:25.6683534Z       "title": "spawn-psyche seam (fresh + resume templates)",
2026-06-22T00:46:25.6683625Z       "requiredStages": [
2026-06-22T00:46:25.6683712Z         "impl",
2026-06-22T00:46:25.6683792Z         "unit",
2026-06-22T00:46:25.6683872Z         "int"
2026-06-22T00:46:25.6683949Z       ],
2026-06-22T00:46:25.6684040Z       "stages": {
2026-06-22T00:46:25.6684125Z         "doc": {
2026-06-22T00:46:25.6684211Z           "complete": false,
2026-06-22T00:46:25.6684307Z           "evidence": []
2026-06-22T00:46:25.6684388Z         },
2026-06-22T00:46:25.6684473Z         "impl": {
2026-06-22T00:46:25.6684559Z           "complete": true,
2026-06-22T00:46:25.6684645Z           "evidence": [
2026-06-22T00:46:25.6684726Z             {
2026-06-22T00:46:25.6684835Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-22T00:46:25.6684932Z               "line": 19
2026-06-22T00:46:25.6685012Z             },
2026-06-22T00:46:25.6685093Z             {
2026-06-22T00:46:25.6685204Z               "path": "crates/spt/src/api/live.rs",
2026-06-22T00:46:25.6685393Z               "line": 12
2026-06-22T00:46:25.6685480Z             },
2026-06-22T00:46:25.6685656Z             {
2026-06-22T00:46:25.6685765Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.6685850Z               "line": 301
2026-06-22T00:46:25.6685931Z             }
2026-06-22T00:46:25.6686011Z           ]
2026-06-22T00:46:25.6686096Z         },
2026-06-22T00:46:25.6686168Z         "int": {
2026-06-22T00:46:25.6686259Z           "complete": true,
2026-06-22T00:46:25.6686349Z           "evidence": [
2026-06-22T00:46:25.6686434Z             {
2026-06-22T00:46:25.6686560Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T00:46:25.6686645Z               "line": 259
2026-06-22T00:46:25.6686730Z             }
2026-06-22T00:46:25.6686812Z           ]
2026-06-22T00:46:25.6686898Z         },
2026-06-22T00:46:25.6686992Z         "unit": {
2026-06-22T00:46:25.6687083Z           "complete": true,
2026-06-22T00:46:25.6687179Z           "evidence": [
2026-06-22T00:46:25.6687260Z             {
2026-06-22T00:46:25.6687378Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-22T00:46:25.6687466Z               "line": 195
2026-06-22T00:46:25.6687555Z             },
2026-06-22T00:46:25.6687636Z             {
2026-06-22T00:46:25.6687742Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-22T00:46:25.6687833Z               "line": 202
2026-06-22T00:46:25.6687913Z             },
2026-06-22T00:46:25.6687994Z             {
2026-06-22T00:46:25.6688105Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-22T00:46:25.6688195Z               "line": 225
2026-06-22T00:46:25.6688280Z             },
2026-06-22T00:46:25.6688367Z             {
2026-06-22T00:46:25.6688482Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-22T00:46:25.6688561Z               "line": 106
2026-06-22T00:46:25.6688646Z             },
2026-06-22T00:46:25.6688718Z             {
2026-06-22T00:46:25.6688841Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-22T00:46:25.6688934Z               "line": 137
2026-06-22T00:46:25.6689107Z             },
2026-06-22T00:46:25.6689179Z             {
2026-06-22T00:46:25.6689287Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-22T00:46:25.6689374Z               "line": 161
2026-06-22T00:46:25.6689483Z             }
2026-06-22T00:46:25.6689564Z           ]
2026-06-22T00:46:25.6689654Z         }
2026-06-22T00:46:25.6689737Z       }
2026-06-22T00:46:25.6689817Z     },
2026-06-22T00:46:25.6689893Z     {
2026-06-22T00:46:25.6689984Z       "id": "REQ-SEAM-RESUME",
2026-06-22T00:46:25.6690160Z       "title": "resume-session seam (fresh-with-preload / continue-existing)",
2026-06-22T00:46:25.6690250Z       "requiredStages": [
2026-06-22T00:46:25.6690333Z         "impl",
2026-06-22T00:46:25.6690414Z         "unit"
2026-06-22T00:46:25.6690493Z       ],
2026-06-22T00:46:25.6690570Z       "stages": {
2026-06-22T00:46:25.6690657Z         "doc": {
2026-06-22T00:46:25.6690757Z           "complete": false,
2026-06-22T00:46:25.6690837Z           "evidence": []
2026-06-22T00:46:25.6690919Z         },
2026-06-22T00:46:25.6691005Z         "impl": {
2026-06-22T00:46:25.6691090Z           "complete": true,
2026-06-22T00:46:25.6691175Z           "evidence": [
2026-06-22T00:46:25.6691260Z             {
2026-06-22T00:46:25.6691366Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T00:46:25.6691449Z               "line": 19
2026-06-22T00:46:25.6691535Z             }
2026-06-22T00:46:25.6691607Z           ]
2026-06-22T00:46:25.6691693Z         },
2026-06-22T00:46:25.6691773Z         "int": {
2026-06-22T00:46:25.6691864Z           "complete": false,
2026-06-22T00:46:25.6691950Z           "evidence": []
2026-06-22T00:46:25.6692031Z         },
2026-06-22T00:46:25.6692116Z         "unit": {
2026-06-22T00:46:25.6692202Z           "complete": true,
2026-06-22T00:46:25.6692299Z           "evidence": [
2026-06-22T00:46:25.6692384Z             {
2026-06-22T00:46:25.6692493Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T00:46:25.6692693Z               "line": 201
2026-06-22T00:46:25.6692885Z             },
2026-06-22T00:46:25.6692966Z             {
2026-06-22T00:46:25.6693075Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T00:46:25.6693161Z               "line": 223
2026-06-22T00:46:25.6693238Z             },
2026-06-22T00:46:25.6693327Z             {
2026-06-22T00:46:25.6693437Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T00:46:25.6693524Z               "line": 244
2026-06-22T00:46:25.6693619Z             }
2026-06-22T00:46:25.6693694Z           ]
2026-06-22T00:46:25.6693786Z         }
2026-06-22T00:46:25.6693868Z       }
2026-06-22T00:46:25.6693957Z     },
2026-06-22T00:46:25.6694028Z     {
2026-06-22T00:46:25.6694132Z       "id": "REQ-SEAM-SPAWN",
2026-06-22T00:46:25.6694233Z       "title": "spawn-session seam",
2026-06-22T00:46:25.6694323Z       "requiredStages": [
2026-06-22T00:46:25.6694414Z         "impl",
2026-06-22T00:46:25.6694505Z         "unit"
2026-06-22T00:46:25.6694591Z       ],
2026-06-22T00:46:25.6694676Z       "stages": {
2026-06-22T00:46:25.6694766Z         "doc": {
2026-06-22T00:46:25.6694863Z           "complete": false,
2026-06-22T00:46:25.6694949Z           "evidence": []
2026-06-22T00:46:25.6695038Z         },
2026-06-22T00:46:25.6695120Z         "impl": {
2026-06-22T00:46:25.6695215Z           "complete": true,
2026-06-22T00:46:25.6695301Z           "evidence": [
2026-06-22T00:46:25.6695396Z             {
2026-06-22T00:46:25.6695525Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T00:46:25.6695606Z               "line": 20
2026-06-22T00:46:25.6695692Z             }
2026-06-22T00:46:25.6695774Z           ]
2026-06-22T00:46:25.6695864Z         },
2026-06-22T00:46:25.6695949Z         "int": {
2026-06-22T00:46:25.6696049Z           "complete": false,
2026-06-22T00:46:25.6696141Z           "evidence": []
2026-06-22T00:46:25.6696225Z         },
2026-06-22T00:46:25.6696315Z         "unit": {
2026-06-22T00:46:25.6696410Z           "complete": true,
2026-06-22T00:46:25.6696505Z           "evidence": [
2026-06-22T00:46:25.6696585Z             {
2026-06-22T00:46:25.6696699Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T00:46:25.6696795Z               "line": 608
2026-06-22T00:46:25.6696876Z             },
2026-06-22T00:46:25.6696956Z             {
2026-06-22T00:46:25.6697067Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T00:46:25.6697162Z               "line": 615
2026-06-22T00:46:25.6697243Z             },
2026-06-22T00:46:25.6697314Z             {
2026-06-22T00:46:25.6697434Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T00:46:25.6697520Z               "line": 721
2026-06-22T00:46:25.6697605Z             },
2026-06-22T00:46:25.6697687Z             {
2026-06-22T00:46:25.6697806Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T00:46:25.6697891Z               "line": 727
2026-06-22T00:46:25.6697968Z             },
2026-06-22T00:46:25.6698050Z             {
2026-06-22T00:46:25.6698168Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T00:46:25.6698263Z               "line": 752
2026-06-22T00:46:25.6698341Z             },
2026-06-22T00:46:25.6698426Z             {
2026-06-22T00:46:25.6698545Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T00:46:25.6698626Z               "line": 789
2026-06-22T00:46:25.6698707Z             }
2026-06-22T00:46:25.6698792Z           ]
2026-06-22T00:46:25.6698874Z         }
2026-06-22T00:46:25.6699042Z       }
2026-06-22T00:46:25.6699131Z     },
2026-06-22T00:46:25.6699220Z     {
2026-06-22T00:46:25.6699316Z       "id": "REQ-SEAM-UPDATE",
2026-06-22T00:46:25.6699490Z       "title": "Adapter-update avenue (file-pull / delegated command)",
2026-06-22T00:46:25.6699576Z       "requiredStages": [
2026-06-22T00:46:25.6699657Z         "impl",
2026-06-22T00:46:25.6699739Z         "unit"
2026-06-22T00:46:25.6699828Z       ],
2026-06-22T00:46:25.6700030Z       "stages": {
2026-06-22T00:46:25.6700115Z         "doc": {
2026-06-22T00:46:25.6700215Z           "complete": false,
2026-06-22T00:46:25.6700406Z           "evidence": []
2026-06-22T00:46:25.6700505Z         },
2026-06-22T00:46:25.6700583Z         "impl": {
2026-06-22T00:46:25.6700682Z           "complete": true,
2026-06-22T00:46:25.6700778Z           "evidence": [
2026-06-22T00:46:25.6700859Z             {
2026-06-22T00:46:25.6700997Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T00:46:25.6701083Z               "line": 28
2026-06-22T00:46:25.6701169Z             },
2026-06-22T00:46:25.6701250Z             {
2026-06-22T00:46:25.6701377Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T00:46:25.6701464Z               "line": 88
2026-06-22T00:46:25.6701542Z             }
2026-06-22T00:46:25.6701627Z           ]
2026-06-22T00:46:25.6701702Z         },
2026-06-22T00:46:25.6701782Z         "int": {
2026-06-22T00:46:25.6701873Z           "complete": false,
2026-06-22T00:46:25.6701972Z           "evidence": []
2026-06-22T00:46:25.6702057Z         },
2026-06-22T00:46:25.6702147Z         "unit": {
2026-06-22T00:46:25.6702248Z           "complete": true,
2026-06-22T00:46:25.6702329Z           "evidence": [
2026-06-22T00:46:25.6702414Z             {
2026-06-22T00:46:25.6702539Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T00:46:25.6702630Z               "line": 326
2026-06-22T00:46:25.6702714Z             },
2026-06-22T00:46:25.6702796Z             {
2026-06-22T00:46:25.6702925Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T00:46:25.6703001Z               "line": 337
2026-06-22T00:46:25.6703087Z             }
2026-06-22T00:46:25.6703173Z           ]
2026-06-22T00:46:25.6703258Z         }
2026-06-22T00:46:25.6703344Z       }
2026-06-22T00:46:25.6703411Z     },
2026-06-22T00:46:25.6703503Z     {
2026-06-22T00:46:25.6703582Z       "id": "REQ-SEC-1",
2026-06-22T00:46:25.6703969Z       "title": "Per-endpoint access whitelist: origin-node gate, stateful-firewall (reply/outbound exempt), node-now/user-later, outer gate before grants",
2026-06-22T00:46:25.6704070Z       "requiredStages": [
2026-06-22T00:46:25.6704156Z         "impl",
2026-06-22T00:46:25.6704240Z         "unit"
2026-06-22T00:46:25.6704326Z       ],
2026-06-22T00:46:25.6704409Z       "stages": {
2026-06-22T00:46:25.6704495Z         "doc": {
2026-06-22T00:46:25.6704583Z           "complete": false,
2026-06-22T00:46:25.6704664Z           "evidence": []
2026-06-22T00:46:25.6704745Z         },
2026-06-22T00:46:25.6704827Z         "impl": {
2026-06-22T00:46:25.6704912Z           "complete": true,
2026-06-22T00:46:25.6704997Z           "evidence": [
2026-06-22T00:46:25.6705079Z             {
2026-06-22T00:46:25.6705203Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T00:46:25.6705293Z               "line": 86
2026-06-22T00:46:25.6705380Z             },
2026-06-22T00:46:25.6705465Z             {
2026-06-22T00:46:25.6705574Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T00:46:25.6705675Z               "line": 116
2026-06-22T00:46:25.6705766Z             },
2026-06-22T00:46:25.6705852Z             {
2026-06-22T00:46:25.6705961Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T00:46:25.6706053Z               "line": 130
2026-06-22T00:46:25.6706147Z             },
2026-06-22T00:46:25.6706233Z             {
2026-06-22T00:46:25.6706353Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T00:46:25.6706438Z               "line": 109
2026-06-22T00:46:25.6706528Z             },
2026-06-22T00:46:25.6706609Z             {
2026-06-22T00:46:25.6706729Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T00:46:25.6706828Z               "line": 130
2026-06-22T00:46:25.6706899Z             },
2026-06-22T00:46:25.6706990Z             {
2026-06-22T00:46:25.6707103Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T00:46:25.6707197Z               "line": 143
2026-06-22T00:46:25.6707365Z             },
2026-06-22T00:46:25.6707455Z             {
2026-06-22T00:46:25.6707579Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T00:46:25.6707727Z               "line": 209
2026-06-22T00:46:25.6707812Z             },
2026-06-22T00:46:25.6707893Z             {
2026-06-22T00:46:25.6708018Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T00:46:25.6708117Z               "line": 235
2026-06-22T00:46:25.6708193Z             },
2026-06-22T00:46:25.6708281Z             {
2026-06-22T00:46:25.6708385Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6708485Z               "line": 5295
2026-06-22T00:46:25.6708566Z             }
2026-06-22T00:46:25.6708652Z           ]
2026-06-22T00:46:25.6708733Z         },
2026-06-22T00:46:25.6708818Z         "int": {
2026-06-22T00:46:25.6708906Z           "complete": false,
2026-06-22T00:46:25.6709076Z           "evidence": []
2026-06-22T00:46:25.6709167Z         },
2026-06-22T00:46:25.6709249Z         "unit": {
2026-06-22T00:46:25.6709352Z           "complete": true,
2026-06-22T00:46:25.6709453Z           "evidence": [
2026-06-22T00:46:25.6709545Z             {
2026-06-22T00:46:25.6709667Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T00:46:25.6709752Z               "line": 142
2026-06-22T00:46:25.6709838Z             },
2026-06-22T00:46:25.6709919Z             {
2026-06-22T00:46:25.6710036Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T00:46:25.6710131Z               "line": 194
2026-06-22T00:46:25.6710213Z             },
2026-06-22T00:46:25.6710304Z             {
2026-06-22T00:46:25.6710417Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T00:46:25.6710509Z               "line": 235
2026-06-22T00:46:25.6710594Z             },
2026-06-22T00:46:25.6710684Z             {
2026-06-22T00:46:25.6710804Z               "path": "crates/spt-daemon/tests/access.rs",
2026-06-22T00:46:25.6710885Z               "line": 140
2026-06-22T00:46:25.6710971Z             },
2026-06-22T00:46:25.6711056Z             {
2026-06-22T00:46:25.6711171Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T00:46:25.6711252Z               "line": 247
2026-06-22T00:46:25.6711328Z             },
2026-06-22T00:46:25.6711409Z             {
2026-06-22T00:46:25.6711510Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T00:46:25.6711604Z               "line": 277
2026-06-22T00:46:25.6711681Z             },
2026-06-22T00:46:25.6711763Z             {
2026-06-22T00:46:25.6711863Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T00:46:25.6711967Z               "line": 310
2026-06-22T00:46:25.6712054Z             },
2026-06-22T00:46:25.6712135Z             {
2026-06-22T00:46:25.6712258Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T00:46:25.6712333Z               "line": 329
2026-06-22T00:46:25.6712419Z             },
2026-06-22T00:46:25.6712500Z             {
2026-06-22T00:46:25.6712612Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T00:46:25.6712707Z               "line": 362
2026-06-22T00:46:25.6712789Z             },
2026-06-22T00:46:25.6712880Z             {
2026-06-22T00:46:25.6712988Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T00:46:25.6713080Z               "line": 386
2026-06-22T00:46:25.6713165Z             },
2026-06-22T00:46:25.6713246Z             {
2026-06-22T00:46:25.6713361Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6713442Z               "line": 8296
2026-06-22T00:46:25.6713528Z             }
2026-06-22T00:46:25.6713613Z           ]
2026-06-22T00:46:25.6713700Z         }
2026-06-22T00:46:25.6713786Z       }
2026-06-22T00:46:25.6713872Z     },
2026-06-22T00:46:25.6713957Z     {
2026-06-22T00:46:25.6714058Z       "id": "REQ-SEND-SPT-HOSTED",
2026-06-22T00:46:25.6717748Z       "title": "An inbound `spt send` is DELIVERED to an spt-hosted endpoint (brought up via `spt endpoint run` → `api bind`, broker holds its PTY, NO `api listen` relay). Today cmd_bind→establish_perch (api/startup.rs ~441) writes info.json + ready marker + controllable=Some(true) but registers NO message-listener / NO address, so deliver.rs resolve_address→None→spool (deliver.rs:132-140) and the message NEVER reaches the live PTY — the endpoint reads 'online' (ready marker) yet `spt send` silently SPOOLS ('online but not deliverable' lie). Per CONTEXT:187-188 the daemon owns the PTY and delivers, manifest-configurable per activity-state (direct PTY injection / relay / HTTP). FIX: route an inbound send for an spt-hosted target through the daemon → broker InputReq → session.write_input PTY-inject (broker.rs dispatch_input/write_input ~988-1022), the same path the brain uses; the live-delivery handshake must report Sent (not Queued) and stop the spool-only fallback for a broker-hosted, PTY-resident endpoint. Detection is local: controllable==Some(true) + spt-hosted state + resolve_address==None. = the spt-core HALF of the wall-b finding (perri owns the adapter half: bind-hook fired-zero-perch + the missing endpoint-run int test). (post-v0.10.0)",
2026-06-22T00:46:25.6718077Z       "requiredStages": [
2026-06-22T00:46:25.6718168Z         "impl",
2026-06-22T00:46:25.6718254Z         "unit",
2026-06-22T00:46:25.6718339Z         "int"
2026-06-22T00:46:25.6718420Z       ],
2026-06-22T00:46:25.6718512Z       "stages": {
2026-06-22T00:46:25.6718592Z         "doc": {
2026-06-22T00:46:25.6718696Z           "complete": false,
2026-06-22T00:46:25.6718778Z           "evidence": []
2026-06-22T00:46:25.6718860Z         },
2026-06-22T00:46:25.6719021Z         "impl": {
2026-06-22T00:46:25.6719107Z           "complete": true,
2026-06-22T00:46:25.6719194Z           "evidence": [
2026-06-22T00:46:25.6719279Z             {
2026-06-22T00:46:25.6719402Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T00:46:25.6719490Z               "line": 1160
2026-06-22T00:46:25.6719574Z             },
2026-06-22T00:46:25.6719669Z             {
2026-06-22T00:46:25.6719785Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.6719889Z               "line": 1965
2026-06-22T00:46:25.6719970Z             },
2026-06-22T00:46:25.6720062Z             {
2026-06-22T00:46:25.6720171Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6720260Z               "line": 2850
2026-06-22T00:46:25.6720350Z             }
2026-06-22T00:46:25.6720422Z           ]
2026-06-22T00:46:25.6720502Z         },
2026-06-22T00:46:25.6720587Z         "int": {
2026-06-22T00:46:25.6720672Z           "complete": true,
2026-06-22T00:46:25.6720768Z           "evidence": [
2026-06-22T00:46:25.6720859Z             {
2026-06-22T00:46:25.6720986Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T00:46:25.6721079Z               "line": 189
2026-06-22T00:46:25.6721159Z             },
2026-06-22T00:46:25.6721230Z             {
2026-06-22T00:46:25.6721350Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T00:46:25.6721445Z               "line": 524
2026-06-22T00:46:25.6721526Z             }
2026-06-22T00:46:25.6721611Z           ]
2026-06-22T00:46:25.6721698Z         },
2026-06-22T00:46:25.6721784Z         "unit": {
2026-06-22T00:46:25.6721860Z           "complete": true,
2026-06-22T00:46:25.6721945Z           "evidence": [
2026-06-22T00:46:25.6722028Z             {
2026-06-22T00:46:25.6722146Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T00:46:25.6722232Z               "line": 980
2026-06-22T00:46:25.6722318Z             },
2026-06-22T00:46:25.6722409Z             {
2026-06-22T00:46:25.6722508Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6722604Z               "line": 7486
2026-06-22T00:46:25.6722686Z             }
2026-06-22T00:46:25.6722771Z           ]
2026-06-22T00:46:25.6722855Z         }
2026-06-22T00:46:25.6722941Z       }
2026-06-22T00:46:25.6723022Z     },
2026-06-22T00:46:25.6723106Z     {
2026-06-22T00:46:25.6723219Z       "id": "REQ-SESSION-RESUME-TEMPLATE",
2026-06-22T00:46:25.6730144Z       "title": "Resuming an endpoint session that HAS conversation history brings up a BLANK session. ROOT (doyle, code-grounded + CONTEXT — case-3 spt-core MISSING feature, NOT a perri docs-miss): CONTEXT L127-129 already defines the resume-session seam ('continue-existing: resume an existing harness session under the adapter — its NATIVE resume'), and the manifest already has the resume-variant pattern (Session has BOTH psyche_init AND psyche_resume, manifest.rs:217-219) — but the agent's own session has ONLY self_ (`[session.self]`, no resume sibling). cmd_endpoint_run (cli.rs:1304) re-passes the session_id through `[session.self]` on resume (resume.unwrap_or_else(mint_session_id)), so the adapter's FRESH command (e.g. `claude --session-id ..`) runs again instead of the harness NATIVE resume (`claude -r ..`) -> CC starts a fresh transcript -> blank. spt-core forwards session_id + cwd faithfully; it just has no way to express the native-resume invocation. SECOND GAP: CC resolves a transcript by session_id + cwd, but the session ledger records only {ts, session_id, trigger} (no cwd), so picker Resume-from-history (cross-project rows) can't restore the right cwd. FIX (doyle design, V0.13.0-P2-SESSION-RESUME-DESIGN.md, mirrors psyche_init->psyche_resume exactly): (A) add a `[session.resume]` role (resume: Option<SessionRole> on Session + roles()/is_empty()); cmd_endpoint_run selects it when --resume is set AND it's declared (fill {id}/{session_id}=resumed id/{session_name} + the resume cwd), else FALL BACK to `[session.self]` (full back-compat). (B) record cwd PER ledger row (operator ruling): {ts, session_id, trigger, cwd} additive serde-default; resume cwd = resumed row cwd -> else perch info.cwd -> else current_dir (back-compat for old rows + single-project endpoints); picker threads the selected row's cwd through Outcome::Run -> cmd_endpoint_run. (C) public docs (MANIFEST + harness-contract) teach `[session.resume]` so perri builds the adapter side BLIND. Adapter follow-on (perri, AFTER spt-core ships+docs): declare `[session.resume] command = claude -r {session_id} --remote-control {id} --dangerously-skip-permissions` from the resume cwd. Completes REQ-READY-AGENT-RESUME / REQ-RUN-PICKER resume-from-history. (v0.13.0)",
2026-06-22T00:46:25.6730496Z       "requiredStages": [
2026-06-22T00:46:25.6730578Z         "doc",
2026-06-22T00:46:25.6730670Z         "impl",
2026-06-22T00:46:25.6730755Z         "unit",
2026-06-22T00:46:25.6730844Z         "int"
2026-06-22T00:46:25.6730924Z       ],
2026-06-22T00:46:25.6731001Z       "stages": {
2026-06-22T00:46:25.6731086Z         "doc": {
2026-06-22T00:46:25.6731180Z           "complete": true,
2026-06-22T00:46:25.6731276Z           "evidence": [
2026-06-22T00:46:25.6731357Z             {
2026-06-22T00:46:25.6731504Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-22T00:46:25.6731600Z               "line": 130
2026-06-22T00:46:25.6731681Z             },
2026-06-22T00:46:25.6731767Z             {
2026-06-22T00:46:25.6731866Z               "path": "docs/MANIFEST.md",
2026-06-22T00:46:25.6731968Z               "line": 96
2026-06-22T00:46:25.6732053Z             }
2026-06-22T00:46:25.6732133Z           ]
2026-06-22T00:46:25.6732220Z         },
2026-06-22T00:46:25.6732302Z         "impl": {
2026-06-22T00:46:25.6732401Z           "complete": true,
2026-06-22T00:46:25.6732491Z           "evidence": [
2026-06-22T00:46:25.6732573Z             {
2026-06-22T00:46:25.6732701Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T00:46:25.6732792Z               "line": 77
2026-06-22T00:46:25.6732883Z             },
2026-06-22T00:46:25.6732964Z             {
2026-06-22T00:46:25.6733092Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T00:46:25.6733179Z               "line": 183
2026-06-22T00:46:25.6733270Z             },
2026-06-22T00:46:25.6733354Z             {
2026-06-22T00:46:25.6733477Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.6733573Z               "line": 222
2026-06-22T00:46:25.6733652Z             },
2026-06-22T00:46:25.6733818Z             {
2026-06-22T00:46:25.6733938Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T00:46:25.6734099Z               "line": 71
2026-06-22T00:46:25.6734181Z             },
2026-06-22T00:46:25.6734267Z             {
2026-06-22T00:46:25.6734376Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T00:46:25.6734462Z               "line": 176
2026-06-22T00:46:25.6734544Z             }
2026-06-22T00:46:25.6734629Z           ]
2026-06-22T00:46:25.6734715Z         },
2026-06-22T00:46:25.6734801Z         "int": {
2026-06-22T00:46:25.6734901Z           "complete": true,
2026-06-22T00:46:25.6734992Z           "evidence": [
2026-06-22T00:46:25.6735077Z             {
2026-06-22T00:46:25.6738476Z               "path": "crates/spt/tests/resume_template_e2e.rs",
2026-06-22T00:46:25.6738594Z               "line": 25
2026-06-22T00:46:25.6738694Z             }
2026-06-22T00:46:25.6738774Z           ]
2026-06-22T00:46:25.6738859Z         },
2026-06-22T00:46:25.6739041Z         "unit": {
2026-06-22T00:46:25.6739150Z           "complete": true,
2026-06-22T00:46:25.6739240Z           "evidence": [
2026-06-22T00:46:25.6739331Z             {
2026-06-22T00:46:25.6739478Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T00:46:25.6739559Z               "line": 341
2026-06-22T00:46:25.6739646Z             },
2026-06-22T00:46:25.6739727Z             {
2026-06-22T00:46:25.6739855Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T00:46:25.6739951Z               "line": 391
2026-06-22T00:46:25.6740037Z             },
2026-06-22T00:46:25.6740118Z             {
2026-06-22T00:46:25.6740242Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.6740333Z               "line": 1244
2026-06-22T00:46:25.6740419Z             },
2026-06-22T00:46:25.6740504Z             {
2026-06-22T00:46:25.6740624Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T00:46:25.6740704Z               "line": 184
2026-06-22T00:46:25.6740789Z             },
2026-06-22T00:46:25.6740867Z             {
2026-06-22T00:46:25.6740981Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T00:46:25.6741076Z               "line": 208
2026-06-22T00:46:25.6741153Z             },
2026-06-22T00:46:25.6741235Z             {
2026-06-22T00:46:25.6741347Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T00:46:25.6741428Z               "line": 236
2026-06-22T00:46:25.6741514Z             },
2026-06-22T00:46:25.6741600Z             {
2026-06-22T00:46:25.6741716Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T00:46:25.6741801Z               "line": 945
2026-06-22T00:46:25.6741893Z             }
2026-06-22T00:46:25.6741965Z           ]
2026-06-22T00:46:25.6742054Z         }
2026-06-22T00:46:25.6742145Z       }
2026-06-22T00:46:25.6742227Z     },
2026-06-22T00:46:25.6742313Z     {
2026-06-22T00:46:25.6742398Z       "id": "REQ-SHELL-1",
2026-06-22T00:46:25.6743261Z       "title": "Shell hosting machinery: shell perch under the owner (type/owner/adapter_name/status/alias), broker-launched binary + api bind local-link handshake, the three channels (command durable, text+file durable + progress-queryable, sensory REST-only never spooled + dropped-unless-owner-live), owner exclusivity (CONTEXT Shell model)",
2026-06-22T00:46:25.6743376Z       "requiredStages": [
2026-06-22T00:46:25.6743458Z         "impl",
2026-06-22T00:46:25.6743538Z         "unit",
2026-06-22T00:46:25.6743623Z         "int"
2026-06-22T00:46:25.6743700Z       ],
2026-06-22T00:46:25.6743782Z       "stages": {
2026-06-22T00:46:25.6743863Z         "doc": {
2026-06-22T00:46:25.6743961Z           "complete": false,
2026-06-22T00:46:25.6744051Z           "evidence": []
2026-06-22T00:46:25.6744138Z         },
2026-06-22T00:46:25.6744222Z         "impl": {
2026-06-22T00:46:25.6744307Z           "complete": true,
2026-06-22T00:46:25.6744393Z           "evidence": [
2026-06-22T00:46:25.6744484Z             {
2026-06-22T00:46:25.6744612Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T00:46:25.6744851Z               "line": 189
2026-06-22T00:46:25.6744941Z             },
2026-06-22T00:46:25.6745108Z             {
2026-06-22T00:46:25.6745237Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T00:46:25.6745322Z               "line": 268
2026-06-22T00:46:25.6745414Z             },
2026-06-22T00:46:25.6745499Z             {
2026-06-22T00:46:25.6745613Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T00:46:25.6745710Z               "line": 27
2026-06-22T00:46:25.6745785Z             },
2026-06-22T00:46:25.6745871Z             {
2026-06-22T00:46:25.6745991Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T00:46:25.6746081Z               "line": 52
2026-06-22T00:46:25.6746166Z             },
2026-06-22T00:46:25.6746252Z             {
2026-06-22T00:46:25.6746377Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T00:46:25.6746466Z               "line": 144
2026-06-22T00:46:25.6746567Z             },
2026-06-22T00:46:25.6746649Z             {
2026-06-22T00:46:25.6746772Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T00:46:25.6746871Z               "line": 176
2026-06-22T00:46:25.6746947Z             },
2026-06-22T00:46:25.6747034Z             {
2026-06-22T00:46:25.6747153Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T00:46:25.6747243Z               "line": 22
2026-06-22T00:46:25.6747315Z             },
2026-06-22T00:46:25.6747410Z             {
2026-06-22T00:46:25.6747528Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T00:46:25.6747616Z               "line": 65
2026-06-22T00:46:25.6747706Z             },
2026-06-22T00:46:25.6747787Z             {
2026-06-22T00:46:25.6747906Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T00:46:25.6747983Z               "line": 76
2026-06-22T00:46:25.6748073Z             },
2026-06-22T00:46:25.6748158Z             {
2026-06-22T00:46:25.6748274Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T00:46:25.6748359Z               "line": 151
2026-06-22T00:46:25.6748450Z             },
2026-06-22T00:46:25.6748536Z             {
2026-06-22T00:46:25.6748655Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T00:46:25.6748740Z               "line": 210
2026-06-22T00:46:25.6748821Z             },
2026-06-22T00:46:25.6748899Z             {
2026-06-22T00:46:25.6749092Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T00:46:25.6749177Z               "line": 259
2026-06-22T00:46:25.6749264Z             },
2026-06-22T00:46:25.6749339Z             {
2026-06-22T00:46:25.6749466Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T00:46:25.6749557Z               "line": 281
2026-06-22T00:46:25.6749686Z             },
2026-06-22T00:46:25.6749762Z             {
2026-06-22T00:46:25.6749881Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T00:46:25.6749962Z               "line": 294
2026-06-22T00:46:25.6750053Z             },
2026-06-22T00:46:25.6750138Z             {
2026-06-22T00:46:25.6750259Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T00:46:25.6750349Z               "line": 217
2026-06-22T00:46:25.6750424Z             },
2026-06-22T00:46:25.6750502Z             {
2026-06-22T00:46:25.6750611Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T00:46:25.6750697Z               "line": 233
2026-06-22T00:46:25.6750782Z             },
2026-06-22T00:46:25.6750860Z             {
2026-06-22T00:46:25.6750979Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T00:46:25.6751068Z               "line": 41
2026-06-22T00:46:25.6751146Z             },
2026-06-22T00:46:25.6751231Z             {
2026-06-22T00:46:25.6751354Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T00:46:25.6751437Z               "line": 222
2026-06-22T00:46:25.6751523Z             },
2026-06-22T00:46:25.6751597Z             {
2026-06-22T00:46:25.6751828Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T00:46:25.6751912Z               "line": 173
2026-06-22T00:46:25.6752079Z             },
2026-06-22T00:46:25.6752155Z             {
2026-06-22T00:46:25.6752258Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T00:46:25.6752343Z               "line": 354
2026-06-22T00:46:25.6752424Z             },
2026-06-22T00:46:25.6752511Z             {
2026-06-22T00:46:25.6752619Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T00:46:25.6752710Z               "line": 419
2026-06-22T00:46:25.6752797Z             },
2026-06-22T00:46:25.6752878Z             {
2026-06-22T00:46:25.6752991Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.6753083Z               "line": 333
2026-06-22T00:46:25.6753159Z             },
2026-06-22T00:46:25.6753235Z             {
2026-06-22T00:46:25.6753335Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6753417Z               "line": 6320
2026-06-22T00:46:25.6753511Z             },
2026-06-22T00:46:25.6753592Z             {
2026-06-22T00:46:25.6753693Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6753788Z               "line": 6470
2026-06-22T00:46:25.6753874Z             },
2026-06-22T00:46:25.6753960Z             {
2026-06-22T00:46:25.6754066Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6754145Z               "line": 6646
2026-06-22T00:46:25.6754231Z             }
2026-06-22T00:46:25.6754314Z           ]
2026-06-22T00:46:25.6754390Z         },
2026-06-22T00:46:25.6754469Z         "int": {
2026-06-22T00:46:25.6754550Z           "complete": true,
2026-06-22T00:46:25.6754641Z           "evidence": [
2026-06-22T00:46:25.6754726Z             {
2026-06-22T00:46:25.6754853Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T00:46:25.6754938Z               "line": 713
2026-06-22T00:46:25.6755020Z             },
2026-06-22T00:46:25.6755101Z             {
2026-06-22T00:46:25.6755229Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-22T00:46:25.6755331Z               "line": 8
2026-06-22T00:46:25.6755406Z             },
2026-06-22T00:46:25.6755491Z             {
2026-06-22T00:46:25.6755611Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-22T00:46:25.6755697Z               "line": 49
2026-06-22T00:46:25.6755783Z             },
2026-06-22T00:46:25.6755863Z             {
2026-06-22T00:46:25.6755998Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T00:46:25.6756088Z               "line": 778
2026-06-22T00:46:25.6756174Z             },
2026-06-22T00:46:25.6756255Z             {
2026-06-22T00:46:25.6756378Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T00:46:25.6756469Z               "line": 1213
2026-06-22T00:46:25.6756546Z             },
2026-06-22T00:46:25.6756632Z             {
2026-06-22T00:46:25.6756746Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-22T00:46:25.6756831Z               "line": 17
2026-06-22T00:46:25.6756919Z             },
2026-06-22T00:46:25.6756998Z             {
2026-06-22T00:46:25.6757113Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-22T00:46:25.6757200Z               "line": 14
2026-06-22T00:46:25.6757285Z             }
2026-06-22T00:46:25.6757365Z           ]
2026-06-22T00:46:25.6757450Z         },
2026-06-22T00:46:25.6757536Z         "unit": {
2026-06-22T00:46:25.6757633Z           "complete": true,
2026-06-22T00:46:25.6757713Z           "evidence": [
2026-06-22T00:46:25.6757798Z             {
2026-06-22T00:46:25.6757914Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T00:46:25.6757995Z               "line": 246
2026-06-22T00:46:25.6758075Z             },
2026-06-22T00:46:25.6758156Z             {
2026-06-22T00:46:25.6758266Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T00:46:25.6758356Z               "line": 279
2026-06-22T00:46:25.6758437Z             },
2026-06-22T00:46:25.6758515Z             {
2026-06-22T00:46:25.6758733Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T00:46:25.6758815Z               "line": 319
2026-06-22T00:46:25.6759062Z             },
2026-06-22T00:46:25.6759145Z             {
2026-06-22T00:46:25.6759267Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T00:46:25.6759353Z               "line": 599
2026-06-22T00:46:25.6759439Z             },
2026-06-22T00:46:25.6759521Z             {
2026-06-22T00:46:25.6759629Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T00:46:25.6759714Z               "line": 672
2026-06-22T00:46:25.6759800Z             },
2026-06-22T00:46:25.6759890Z             {
2026-06-22T00:46:25.6760003Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T00:46:25.6760079Z               "line": 816
2026-06-22T00:46:25.6760161Z             },
2026-06-22T00:46:25.6760246Z             {
2026-06-22T00:46:25.6760355Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T00:46:25.6760451Z               "line": 595
2026-06-22T00:46:25.6760542Z             },
2026-06-22T00:46:25.6760618Z             {
2026-06-22T00:46:25.6760748Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T00:46:25.6760833Z               "line": 399
2026-06-22T00:46:25.6760923Z             },
2026-06-22T00:46:25.6761009Z             {
2026-06-22T00:46:25.6761105Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6761195Z               "line": 8976
2026-06-22T00:46:25.6761280Z             },
2026-06-22T00:46:25.6761367Z             {
2026-06-22T00:46:25.6761462Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6761543Z               "line": 9300
2026-06-22T00:46:25.6761633Z             },
2026-06-22T00:46:25.6761716Z             {
2026-06-22T00:46:25.6761820Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6761910Z               "line": 9717
2026-06-22T00:46:25.6761997Z             }
2026-06-22T00:46:25.6762078Z           ]
2026-06-22T00:46:25.6762167Z         }
2026-06-22T00:46:25.6762248Z       }
2026-06-22T00:46:25.6762331Z     },
2026-06-22T00:46:25.6762412Z     {
2026-06-22T00:46:25.6762501Z       "id": "REQ-SHELL-2",
2026-06-22T00:46:25.6763963Z       "title": "Shell sleep/wake: link-break always closes the binary (pre-close instruction + termination timeout), ephemeral teardown vs persistent offline/relink, wake_command wake-watcher (offline-only, exit-opcode supervision, exponential backoff + give-up), state-keyed wake resolution (dormant/suspended/active-elsewhere; no-reachable refuses — spawn-anywhere branch deferred), spt shutdown owner cascade + api owner-shutdown gated by can_shutdown (CONTEXT Shell sleep/wake)",
2026-06-22T00:46:25.6764071Z       "requiredStages": [
2026-06-22T00:46:25.6764152Z         "impl",
2026-06-22T00:46:25.6764234Z         "unit",
2026-06-22T00:46:25.6764316Z         "int"
2026-06-22T00:46:25.6764400Z       ],
2026-06-22T00:46:25.6764481Z       "stages": {
2026-06-22T00:46:25.6764569Z         "doc": {
2026-06-22T00:46:25.6764673Z           "complete": false,
2026-06-22T00:46:25.6764763Z           "evidence": []
2026-06-22T00:46:25.6764849Z         },
2026-06-22T00:46:25.6764936Z         "impl": {
2026-06-22T00:46:25.6765020Z           "complete": true,
2026-06-22T00:46:25.6765105Z           "evidence": [
2026-06-22T00:46:25.6765186Z             {
2026-06-22T00:46:25.6765296Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.6765379Z               "line": 217
2026-06-22T00:46:25.6765465Z             },
2026-06-22T00:46:25.6765537Z             {
2026-06-22T00:46:25.6765657Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T00:46:25.6765746Z               "line": 403
2026-06-22T00:46:25.6765828Z             },
2026-06-22T00:46:25.6765914Z             {
2026-06-22T00:46:25.6766019Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T00:46:25.6766109Z               "line": 250
2026-06-22T00:46:25.6766191Z             },
2026-06-22T00:46:25.6766477Z             {
2026-06-22T00:46:25.6766591Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T00:46:25.6766781Z               "line": 403
2026-06-22T00:46:25.6766868Z             },
2026-06-22T00:46:25.6766948Z             {
2026-06-22T00:46:25.6767068Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T00:46:25.6767154Z               "line": 30
2026-06-22T00:46:25.6767244Z             },
2026-06-22T00:46:25.6767311Z             {
2026-06-22T00:46:25.6767431Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T00:46:25.6767522Z               "line": 409
2026-06-22T00:46:25.6767606Z             },
2026-06-22T00:46:25.6767692Z             {
2026-06-22T00:46:25.6767803Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T00:46:25.6767901Z               "line": 445
2026-06-22T00:46:25.6767987Z             },
2026-06-22T00:46:25.6768068Z             {
2026-06-22T00:46:25.6768188Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T00:46:25.6768268Z               "line": 660
2026-06-22T00:46:25.6768353Z             },
2026-06-22T00:46:25.6768440Z             {
2026-06-22T00:46:25.6768559Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T00:46:25.6768645Z               "line": 348
2026-06-22T00:46:25.6768726Z             },
2026-06-22T00:46:25.6768803Z             {
2026-06-22T00:46:25.6768921Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T00:46:25.6769085Z               "line": 115
2026-06-22T00:46:25.6769155Z             },
2026-06-22T00:46:25.6769241Z             {
2026-06-22T00:46:25.6769365Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T00:46:25.6769470Z               "line": 120
2026-06-22T00:46:25.6769551Z             },
2026-06-22T00:46:25.6769631Z             {
2026-06-22T00:46:25.6769752Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T00:46:25.6769836Z               "line": 374
2026-06-22T00:46:25.6769927Z             },
2026-06-22T00:46:25.6770009Z             {
2026-06-22T00:46:25.6770119Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T00:46:25.6770213Z               "line": 500
2026-06-22T00:46:25.6770298Z             },
2026-06-22T00:46:25.6770384Z             {
2026-06-22T00:46:25.6770496Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T00:46:25.6770586Z               "line": 24
2026-06-22T00:46:25.6770668Z             },
2026-06-22T00:46:25.6770745Z             {
2026-06-22T00:46:25.6770859Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T00:46:25.6770940Z               "line": 76
2026-06-22T00:46:25.6771021Z             },
2026-06-22T00:46:25.6771102Z             {
2026-06-22T00:46:25.6771220Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T00:46:25.6771308Z               "line": 154
2026-06-22T00:46:25.6771388Z             },
2026-06-22T00:46:25.6771473Z             {
2026-06-22T00:46:25.6771588Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T00:46:25.6771689Z               "line": 177
2026-06-22T00:46:25.6771774Z             },
2026-06-22T00:46:25.6771864Z             {
2026-06-22T00:46:25.6771975Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T00:46:25.6772051Z               "line": 273
2026-06-22T00:46:25.6772137Z             },
2026-06-22T00:46:25.6772218Z             {
2026-06-22T00:46:25.6772342Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T00:46:25.6772422Z               "line": 456
2026-06-22T00:46:25.6772503Z             },
2026-06-22T00:46:25.6772581Z             {
2026-06-22T00:46:25.6772699Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T00:46:25.6772795Z               "line": 538
2026-06-22T00:46:25.6772876Z             },
2026-06-22T00:46:25.6772958Z             {
2026-06-22T00:46:25.6773080Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-22T00:46:25.6773160Z               "line": 27
2026-06-22T00:46:25.6773354Z             },
2026-06-22T00:46:25.6773434Z             {
2026-06-22T00:46:25.6773564Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-22T00:46:25.6773726Z               "line": 48
2026-06-22T00:46:25.6773816Z             },
2026-06-22T00:46:25.6773898Z             {
2026-06-22T00:46:25.6774003Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.6774087Z               "line": 517
2026-06-22T00:46:25.6774170Z             },
2026-06-22T00:46:25.6774256Z             {
2026-06-22T00:46:25.6774355Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6774451Z               "line": 1921
2026-06-22T00:46:25.6774532Z             },
2026-06-22T00:46:25.6774613Z             {
2026-06-22T00:46:25.6774717Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6774809Z               "line": 6334
2026-06-22T00:46:25.6774895Z             },
2026-06-22T00:46:25.6774974Z             {
2026-06-22T00:46:25.6775080Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6775181Z               "line": 6395
2026-06-22T00:46:25.6775261Z             },
2026-06-22T00:46:25.6775347Z             {
2026-06-22T00:46:25.6775444Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6775529Z               "line": 6423
2026-06-22T00:46:25.6775613Z             },
2026-06-22T00:46:25.6775699Z             {
2026-06-22T00:46:25.6775808Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6775893Z               "line": 6477
2026-06-22T00:46:25.6775978Z             },
2026-06-22T00:46:25.6776063Z             {
2026-06-22T00:46:25.6776164Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6776264Z               "line": 6732
2026-06-22T00:46:25.6776349Z             },
2026-06-22T00:46:25.6776436Z             {
2026-06-22T00:46:25.6776536Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6776626Z               "line": 6792
2026-06-22T00:46:25.6776707Z             },
2026-06-22T00:46:25.6776799Z             {
2026-06-22T00:46:25.6776912Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T00:46:25.6777003Z               "line": 298
2026-06-22T00:46:25.6777094Z             },
2026-06-22T00:46:25.6777174Z             {
2026-06-22T00:46:25.6777284Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T00:46:25.6777366Z               "line": 339
2026-06-22T00:46:25.6777457Z             }
2026-06-22T00:46:25.6777533Z           ]
2026-06-22T00:46:25.6777628Z         },
2026-06-22T00:46:25.6777710Z         "int": {
2026-06-22T00:46:25.6777795Z           "complete": true,
2026-06-22T00:46:25.6777881Z           "evidence": [
2026-06-22T00:46:25.6777957Z             {
2026-06-22T00:46:25.6778082Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T00:46:25.6778170Z               "line": 706
2026-06-22T00:46:25.6778262Z             },
2026-06-22T00:46:25.6778349Z             {
2026-06-22T00:46:25.6778462Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T00:46:25.6778566Z               "line": 778
2026-06-22T00:46:25.6778647Z             },
2026-06-22T00:46:25.6778729Z             {
2026-06-22T00:46:25.6778852Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T00:46:25.6779025Z               "line": 1213
2026-06-22T00:46:25.6779115Z             },
2026-06-22T00:46:25.6779195Z             {
2026-06-22T00:46:25.6779335Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-22T00:46:25.6779415Z               "line": 18
2026-06-22T00:46:25.6779500Z             }
2026-06-22T00:46:25.6779591Z           ]
2026-06-22T00:46:25.6779673Z         },
2026-06-22T00:46:25.6779753Z         "unit": {
2026-06-22T00:46:25.6779848Z           "complete": true,
2026-06-22T00:46:25.6779940Z           "evidence": [
2026-06-22T00:46:25.6780021Z             {
2026-06-22T00:46:25.6780139Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T00:46:25.6780226Z               "line": 744
2026-06-22T00:46:25.6780308Z             },
2026-06-22T00:46:25.6780502Z             {
2026-06-22T00:46:25.6780618Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T00:46:25.6780820Z               "line": 796
2026-06-22T00:46:25.6780901Z             },
2026-06-22T00:46:25.6780991Z             {
2026-06-22T00:46:25.6781100Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T00:46:25.6781180Z               "line": 705
2026-06-22T00:46:25.6781266Z             },
2026-06-22T00:46:25.6781348Z             {
2026-06-22T00:46:25.6781461Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T00:46:25.6781543Z               "line": 754
2026-06-22T00:46:25.6781629Z             },
2026-06-22T00:46:25.6781714Z             {
2026-06-22T00:46:25.6781819Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T00:46:25.6781901Z               "line": 778
2026-06-22T00:46:25.6781987Z             },
2026-06-22T00:46:25.6782067Z             {
2026-06-22T00:46:25.6782173Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T00:46:25.6782282Z               "line": 603
2026-06-22T00:46:25.6782372Z             },
2026-06-22T00:46:25.6782463Z             {
2026-06-22T00:46:25.6782568Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T00:46:25.6782649Z               "line": 624
2026-06-22T00:46:25.6782735Z             },
2026-06-22T00:46:25.6782817Z             {
2026-06-22T00:46:25.6782930Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T00:46:25.6783021Z               "line": 660
2026-06-22T00:46:25.6783098Z             },
2026-06-22T00:46:25.6783189Z             {
2026-06-22T00:46:25.6783292Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T00:46:25.6783378Z               "line": 714
2026-06-22T00:46:25.6783461Z             },
2026-06-22T00:46:25.6783551Z             {
2026-06-22T00:46:25.6783668Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T00:46:25.6783749Z               "line": 732
2026-06-22T00:46:25.6783844Z             },
2026-06-22T00:46:25.6783928Z             {
2026-06-22T00:46:25.6784042Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T00:46:25.6784143Z               "line": 766
2026-06-22T00:46:25.6784229Z             },
2026-06-22T00:46:25.6784319Z             {
2026-06-22T00:46:25.6784425Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T00:46:25.6784520Z               "line": 841
2026-06-22T00:46:25.6784600Z             },
2026-06-22T00:46:25.6784691Z             {
2026-06-22T00:46:25.6784806Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-22T00:46:25.6784892Z               "line": 85
2026-06-22T00:46:25.6784976Z             },
2026-06-22T00:46:25.6785059Z             {
2026-06-22T00:46:25.6785159Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6785249Z               "line": 8044
2026-06-22T00:46:25.6785335Z             },
2026-06-22T00:46:25.6785422Z             {
2026-06-22T00:46:25.6785521Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6785616Z               "line": 9054
2026-06-22T00:46:25.6785699Z             },
2026-06-22T00:46:25.6785789Z             {
2026-06-22T00:46:25.6785893Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6785984Z               "line": 9124
2026-06-22T00:46:25.6786075Z             },
2026-06-22T00:46:25.6786155Z             {
2026-06-22T00:46:25.6786259Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6786350Z               "line": 9162
2026-06-22T00:46:25.6786439Z             }
2026-06-22T00:46:25.6786523Z           ]
2026-06-22T00:46:25.6786609Z         }
2026-06-22T00:46:25.6786700Z       }
2026-06-22T00:46:25.6786782Z     },
2026-06-22T00:46:25.6786871Z     {
2026-06-22T00:46:25.6786948Z       "id": "REQ-SHELL-3",
2026-06-22T00:46:25.6788717Z       "title": "Drive channel (owner->shell, REST-only, never-spooled, latest-wins): the owner->shell mirror of sensory for continuous real-time control (scroll/crank/stick/avatar) — a [shell.drive] manifest vocab + EVENT_TYPE_DRIVE frame, delivered to the ONLINE binary only via a single live slot (a new frame supersedes an undelivered one — no spool, no queue, no replay on relink), dropped-with-diagnostic if the shell is offline; cross-node rides the ephemeral link (REST class), never the durable shell spool. Commands = discrete+durable; drive = continuous+ephemeral (CONTEXT:260, minted 2026-06-11 Gateway grill).",
2026-06-22T00:46:25.6789045Z       "requiredStages": [
2026-06-22T00:46:25.6789126Z         "impl",
2026-06-22T00:46:25.6789207Z         "unit",
2026-06-22T00:46:25.6789293Z         "int"
2026-06-22T00:46:25.6789384Z       ],
2026-06-22T00:46:25.6789464Z       "stages": {
2026-06-22T00:46:25.6789550Z         "doc": {
2026-06-22T00:46:25.6789641Z           "complete": false,
2026-06-22T00:46:25.6789726Z           "evidence": []
2026-06-22T00:46:25.6789803Z         },
2026-06-22T00:46:25.6789880Z         "impl": {
2026-06-22T00:46:25.6789975Z           "complete": true,
2026-06-22T00:46:25.6790074Z           "evidence": [
2026-06-22T00:46:25.6790156Z             {
2026-06-22T00:46:25.6790285Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.6790370Z               "line": 229
2026-06-22T00:46:25.6790456Z             },
2026-06-22T00:46:25.6790534Z             {
2026-06-22T00:46:25.6790657Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T00:46:25.6790742Z               "line": 36
2026-06-22T00:46:25.6790820Z             },
2026-06-22T00:46:25.6790910Z             {
2026-06-22T00:46:25.6791023Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T00:46:25.6791125Z               "line": 137
2026-06-22T00:46:25.6791206Z             },
2026-06-22T00:46:25.6791290Z             {
2026-06-22T00:46:25.6791404Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T00:46:25.6791495Z               "line": 153
2026-06-22T00:46:25.6791574Z             },
2026-06-22T00:46:25.6791655Z             {
2026-06-22T00:46:25.6791783Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T00:46:25.6791870Z               "line": 165
2026-06-22T00:46:25.6791960Z             },
2026-06-22T00:46:25.6792045Z             {
2026-06-22T00:46:25.6792161Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T00:46:25.6792255Z               "line": 242
2026-06-22T00:46:25.6792336Z             },
2026-06-22T00:46:25.6792418Z             {
2026-06-22T00:46:25.6792523Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T00:46:25.6792617Z               "line": 267
2026-06-22T00:46:25.6792704Z             },
2026-06-22T00:46:25.6792790Z             {
2026-06-22T00:46:25.6792908Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T00:46:25.6792989Z               "line": 293
2026-06-22T00:46:25.6793077Z             },
2026-06-22T00:46:25.6793156Z             {
2026-06-22T00:46:25.6793281Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-22T00:46:25.6793372Z               "line": 51
2026-06-22T00:46:25.6793453Z             },
2026-06-22T00:46:25.6793533Z             {
2026-06-22T00:46:25.6793648Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T00:46:25.6793740Z               "line": 333
2026-06-22T00:46:25.6793824Z             },
2026-06-22T00:46:25.6793905Z             {
2026-06-22T00:46:25.6794016Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T00:46:25.6794106Z               "line": 373
2026-06-22T00:46:25.6794191Z             },
2026-06-22T00:46:25.6794271Z             {
2026-06-22T00:46:25.6794395Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T00:46:25.6794474Z               "line": 602
2026-06-22T00:46:25.6794560Z             },
2026-06-22T00:46:25.6794641Z             {
2026-06-22T00:46:25.6794756Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T00:46:25.6794846Z               "line": 132
2026-06-22T00:46:25.6794917Z             },
2026-06-22T00:46:25.6795004Z             {
2026-06-22T00:46:25.6795231Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T00:46:25.6795319Z               "line": 448
2026-06-22T00:46:25.6795494Z             },
2026-06-22T00:46:25.6795576Z             {
2026-06-22T00:46:25.6795695Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T00:46:25.6795781Z               "line": 74
2026-06-22T00:46:25.6795866Z             },
2026-06-22T00:46:25.6795954Z             {
2026-06-22T00:46:25.6796072Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.6796148Z               "line": 605
2026-06-22T00:46:25.6796234Z             },
2026-06-22T00:46:25.6796315Z             {
2026-06-22T00:46:25.6796424Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.6796525Z               "line": 396
2026-06-22T00:46:25.6796611Z             },
2026-06-22T00:46:25.6796696Z             {
2026-06-22T00:46:25.6796805Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6796900Z               "line": 6518
2026-06-22T00:46:25.6796995Z             }
2026-06-22T00:46:25.6797079Z           ]
2026-06-22T00:46:25.6797174Z         },
2026-06-22T00:46:25.6797265Z         "int": {
2026-06-22T00:46:25.6797356Z           "complete": true,
2026-06-22T00:46:25.6797445Z           "evidence": [
2026-06-22T00:46:25.6797522Z             {
2026-06-22T00:46:25.6797628Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T00:46:25.6797718Z               "line": 1262
2026-06-22T00:46:25.6797804Z             },
2026-06-22T00:46:25.6797890Z             {
2026-06-22T00:46:25.6798000Z               "path": "crates/spt/tests/drive_e2e.rs",
2026-06-22T00:46:25.6798089Z               "line": 17
2026-06-22T00:46:25.6798172Z             }
2026-06-22T00:46:25.6798257Z           ]
2026-06-22T00:46:25.6798343Z         },
2026-06-22T00:46:25.6798423Z         "unit": {
2026-06-22T00:46:25.6798515Z           "complete": true,
2026-06-22T00:46:25.6798596Z           "evidence": [
2026-06-22T00:46:25.6798686Z             {
2026-06-22T00:46:25.6798801Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T00:46:25.6798892Z               "line": 311
2026-06-22T00:46:25.6799043Z             },
2026-06-22T00:46:25.6799126Z             {
2026-06-22T00:46:25.6799249Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T00:46:25.6799330Z               "line": 325
2026-06-22T00:46:25.6799416Z             },
2026-06-22T00:46:25.6799498Z             {
2026-06-22T00:46:25.6799610Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T00:46:25.6799695Z               "line": 343
2026-06-22T00:46:25.6799782Z             },
2026-06-22T00:46:25.6799863Z             {
2026-06-22T00:46:25.6799972Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T00:46:25.6800057Z               "line": 364
2026-06-22T00:46:25.6800140Z             },
2026-06-22T00:46:25.6800226Z             {
2026-06-22T00:46:25.6800339Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T00:46:25.6800431Z               "line": 376
2026-06-22T00:46:25.6800521Z             },
2026-06-22T00:46:25.6800606Z             {
2026-06-22T00:46:25.6800731Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T00:46:25.6800817Z               "line": 897
2026-06-22T00:46:25.6800944Z             },
2026-06-22T00:46:25.6801036Z             {
2026-06-22T00:46:25.6801151Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T00:46:25.6801246Z               "line": 957
2026-06-22T00:46:25.6801327Z             },
2026-06-22T00:46:25.6801409Z             {
2026-06-22T00:46:25.6801526Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T00:46:25.6801617Z               "line": 338
2026-06-22T00:46:25.6801709Z             },
2026-06-22T00:46:25.6801799Z             {
2026-06-22T00:46:25.6801917Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T00:46:25.6802012Z               "line": 769
2026-06-22T00:46:25.6802093Z             },
2026-06-22T00:46:25.6802295Z             {
2026-06-22T00:46:25.6802401Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6802577Z               "line": 8836
2026-06-22T00:46:25.6802658Z             }
2026-06-22T00:46:25.6802745Z           ]
2026-06-22T00:46:25.6802825Z         }
2026-06-22T00:46:25.6802906Z       }
2026-06-22T00:46:25.6802988Z     },
2026-06-22T00:46:25.6803073Z     {
2026-06-22T00:46:25.6803173Z       "id": "REQ-SHELL-4",
2026-06-22T00:46:25.6804917Z       "title": "Shell tunnel (reliable-ordered opaque byte stream): an owner<->shell link may hold a long-lived, reliable-ordered, link-bound QUIC stream pair carrying opaque wire protocol traffic the channel taxonomy must NOT reinterpret (first consumer usbip URB) — manifest opt-in, not enveloped, not MAC-framed, not spooled; the link lifecycle governs it (a link-break closes the tunnel). Reliable-ordered ⇒ congestion surfaces as lag never loss ⇒ acceptable only on-LAN: the on-LAN posture is documented and the tunnel is NOT proven cross-WAN (CONTEXT:262, minted 2026-06-11 Gateway grill; doyle gate C2).",
2026-06-22T00:46:25.6805030Z       "requiredStages": [
2026-06-22T00:46:25.6805110Z         "doc",
2026-06-22T00:46:25.6805192Z         "impl",
2026-06-22T00:46:25.6805273Z         "unit",
2026-06-22T00:46:25.6805363Z         "int"
2026-06-22T00:46:25.6805467Z       ],
2026-06-22T00:46:25.6805555Z       "stages": {
2026-06-22T00:46:25.6805645Z         "doc": {
2026-06-22T00:46:25.6805740Z           "complete": true,
2026-06-22T00:46:25.6805826Z           "evidence": [
2026-06-22T00:46:25.6809381Z             {
2026-06-22T00:46:25.6809536Z               "path": "CONTEXT.md",
2026-06-22T00:46:25.6809642Z               "line": 281
2026-06-22T00:46:25.6809724Z             },
2026-06-22T00:46:25.6809809Z             {
2026-06-22T00:46:25.6810062Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-22T00:46:25.6810161Z               "line": 88
2026-06-22T00:46:25.6810241Z             }
2026-06-22T00:46:25.6810342Z           ]
2026-06-22T00:46:25.6810428Z         },
2026-06-22T00:46:25.6810514Z         "impl": {
2026-06-22T00:46:25.6810627Z           "complete": true,
2026-06-22T00:46:25.6810719Z           "evidence": [
2026-06-22T00:46:25.6810800Z             {
2026-06-22T00:46:25.6810937Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.6811029Z               "line": 243
2026-06-22T00:46:25.6811115Z             },
2026-06-22T00:46:25.6811195Z             {
2026-06-22T00:46:25.6811334Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-22T00:46:25.6811428Z               "line": 61
2026-06-22T00:46:25.6811505Z             },
2026-06-22T00:46:25.6811591Z             {
2026-06-22T00:46:25.6811702Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T00:46:25.6811787Z               "line": 218
2026-06-22T00:46:25.6811858Z             },
2026-06-22T00:46:25.6811945Z             {
2026-06-22T00:46:25.6812068Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T00:46:25.6812163Z               "line": 245
2026-06-22T00:46:25.6812245Z             },
2026-06-22T00:46:25.6812331Z             {
2026-06-22T00:46:25.6812448Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T00:46:25.6812533Z               "line": 616
2026-06-22T00:46:25.6812615Z             },
2026-06-22T00:46:25.6812700Z             {
2026-06-22T00:46:25.6812804Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T00:46:25.6812894Z               "line": 1191
2026-06-22T00:46:25.6812976Z             },
2026-06-22T00:46:25.6813061Z             {
2026-06-22T00:46:25.6813170Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T00:46:25.6813257Z               "line": 1203
2026-06-22T00:46:25.6813343Z             },
2026-06-22T00:46:25.6813423Z             {
2026-06-22T00:46:25.6813543Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T00:46:25.6813619Z               "line": 1244
2026-06-22T00:46:25.6813887Z             },
2026-06-22T00:46:25.6813962Z             {
2026-06-22T00:46:25.6814090Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T00:46:25.6814282Z               "line": 456
2026-06-22T00:46:25.6814358Z             },
2026-06-22T00:46:25.6814439Z             {
2026-06-22T00:46:25.6814550Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T00:46:25.6814643Z               "line": 44
2026-06-22T00:46:25.6814725Z             },
2026-06-22T00:46:25.6814812Z             {
2026-06-22T00:46:25.6814925Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T00:46:25.6815007Z               "line": 208
2026-06-22T00:46:25.6815083Z             },
2026-06-22T00:46:25.6815156Z             {
2026-06-22T00:46:25.6815282Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T00:46:25.6815363Z               "line": 227
2026-06-22T00:46:25.6815449Z             },
2026-06-22T00:46:25.6815539Z             {
2026-06-22T00:46:25.6815642Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T00:46:25.6815747Z               "line": 253
2026-06-22T00:46:25.6815838Z             },
2026-06-22T00:46:25.6815919Z             {
2026-06-22T00:46:25.6816042Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T00:46:25.6816125Z               "line": 272
2026-06-22T00:46:25.6816215Z             },
2026-06-22T00:46:25.6816295Z             {
2026-06-22T00:46:25.6816415Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T00:46:25.6816505Z               "line": 392
2026-06-22T00:46:25.6816591Z             },
2026-06-22T00:46:25.6816681Z             {
2026-06-22T00:46:25.6816797Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T00:46:25.6816877Z               "line": 421
2026-06-22T00:46:25.6816958Z             },
2026-06-22T00:46:25.6817044Z             {
2026-06-22T00:46:25.6817149Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T00:46:25.6817234Z               "line": 439
2026-06-22T00:46:25.6817340Z             },
2026-06-22T00:46:25.6817427Z             {
2026-06-22T00:46:25.6817549Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T00:46:25.6817635Z               "line": 458
2026-06-22T00:46:25.6817723Z             },
2026-06-22T00:46:25.6817802Z             {
2026-06-22T00:46:25.6817929Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T00:46:25.6818015Z               "line": 486
2026-06-22T00:46:25.6818101Z             },
2026-06-22T00:46:25.6818190Z             {
2026-06-22T00:46:25.6818304Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.6818390Z               "line": 624
2026-06-22T00:46:25.6818467Z             },
2026-06-22T00:46:25.6818547Z             {
2026-06-22T00:46:25.6818672Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.6818758Z               "line": 829
2026-06-22T00:46:25.6818833Z             },
2026-06-22T00:46:25.6818909Z             {
2026-06-22T00:46:25.6819167Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.6819248Z               "line": 435
2026-06-22T00:46:25.6819344Z             },
2026-06-22T00:46:25.6819425Z             {
2026-06-22T00:46:25.6819529Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6819616Z               "line": 6574
2026-06-22T00:46:25.6819692Z             }
2026-06-22T00:46:25.6819778Z           ]
2026-06-22T00:46:25.6819858Z         },
2026-06-22T00:46:25.6819936Z         "int": {
2026-06-22T00:46:25.6820030Z           "complete": true,
2026-06-22T00:46:25.6820116Z           "evidence": [
2026-06-22T00:46:25.6820192Z             {
2026-06-22T00:46:25.6820308Z               "path": "crates/spt/tests/tunnel_e2e.rs",
2026-06-22T00:46:25.6820397Z               "line": 18
2026-06-22T00:46:25.6820479Z             }
2026-06-22T00:46:25.6820551Z           ]
2026-06-22T00:46:25.6820632Z         },
2026-06-22T00:46:25.6820707Z         "unit": {
2026-06-22T00:46:25.6820806Z           "complete": true,
2026-06-22T00:46:25.6820998Z           "evidence": [
2026-06-22T00:46:25.6821079Z             {
2026-06-22T00:46:25.6821289Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T00:46:25.6821370Z               "line": 1479
2026-06-22T00:46:25.6821449Z             },
2026-06-22T00:46:25.6821527Z             {
2026-06-22T00:46:25.6821646Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T00:46:25.6821736Z               "line": 1508
2026-06-22T00:46:25.6821822Z             },
2026-06-22T00:46:25.6821909Z             {
2026-06-22T00:46:25.6822018Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T00:46:25.6822103Z               "line": 504
2026-06-22T00:46:25.6822186Z             },
2026-06-22T00:46:25.6822266Z             {
2026-06-22T00:46:25.6822385Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T00:46:25.6822471Z               "line": 514
2026-06-22T00:46:25.6822557Z             },
2026-06-22T00:46:25.6822637Z             {
2026-06-22T00:46:25.6822757Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T00:46:25.6822839Z               "line": 531
2026-06-22T00:46:25.6822920Z             },
2026-06-22T00:46:25.6822994Z             {
2026-06-22T00:46:25.6823113Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T00:46:25.6823194Z               "line": 543
2026-06-22T00:46:25.6823274Z             },
2026-06-22T00:46:25.6823354Z             {
2026-06-22T00:46:25.6823464Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T00:46:25.6823545Z               "line": 555
2026-06-22T00:46:25.6823631Z             },
2026-06-22T00:46:25.6823716Z             {
2026-06-22T00:46:25.6823837Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.6823922Z               "line": 1145
2026-06-22T00:46:25.6823997Z             },
2026-06-22T00:46:25.6824079Z             {
2026-06-22T00:46:25.6824194Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T00:46:25.6824279Z               "line": 776
2026-06-22T00:46:25.6824355Z             }
2026-06-22T00:46:25.6824442Z           ]
2026-06-22T00:46:25.6824522Z         }
2026-06-22T00:46:25.6824613Z       }
2026-06-22T00:46:25.6824694Z     },
2026-06-22T00:46:25.6824771Z     {
2026-06-22T00:46:25.6824865Z       "id": "REQ-SHELL-5",
2026-06-22T00:46:25.6826118Z       "title": "Shell ownership is owner-type-agnostic: any non-Shell endpoint type may own/spawn/drive/command/link a shell (Gateway the named first) — control-exclusivity keys on the owner endpoint_id, NEVER on the owner's endpoint type. No ownership path (mint, launch, owner-from-link, cmd, drive, tunnel, sleep/wake, owner-shutdown) inspects the owner's type (CONTEXT:264, ratified 2026-06-11 Gateway grill).",
2026-06-22T00:46:25.6826221Z       "requiredStages": [
2026-06-22T00:46:25.6826312Z         "doc",
2026-06-22T00:46:25.6826398Z         "impl",
2026-06-22T00:46:25.6826484Z         "unit",
2026-06-22T00:46:25.6826574Z         "int"
2026-06-22T00:46:25.6826670Z       ],
2026-06-22T00:46:25.6826755Z       "stages": {
2026-06-22T00:46:25.6826836Z         "doc": {
2026-06-22T00:46:25.6826931Z           "complete": true,
2026-06-22T00:46:25.6827023Z           "evidence": [
2026-06-22T00:46:25.6827104Z             {
2026-06-22T00:46:25.6827193Z               "path": "CONTEXT.md",
2026-06-22T00:46:25.6827275Z               "line": 284
2026-06-22T00:46:25.6827348Z             }
2026-06-22T00:46:25.6827432Z           ]
2026-06-22T00:46:25.6827508Z         },
2026-06-22T00:46:25.6827590Z         "impl": {
2026-06-22T00:46:25.6827681Z           "complete": true,
2026-06-22T00:46:25.6827766Z           "evidence": [
2026-06-22T00:46:25.6827847Z             {
2026-06-22T00:46:25.6827992Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T00:46:25.6828114Z               "line": 260
2026-06-22T00:46:25.6828205Z             }
2026-06-22T00:46:25.6828278Z           ]
2026-06-22T00:46:25.6828358Z         },
2026-06-22T00:46:25.6828442Z         "int": {
2026-06-22T00:46:25.6828609Z           "complete": true,
2026-06-22T00:46:25.6828689Z           "evidence": [
2026-06-22T00:46:25.6828840Z             {
2026-06-22T00:46:25.6829036Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T00:46:25.6829126Z               "line": 827
2026-06-22T00:46:25.6829208Z             },
2026-06-22T00:46:25.6829294Z             {
2026-06-22T00:46:25.6829451Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T00:46:25.6829532Z               "line": 1290
2026-06-22T00:46:25.6829618Z             },
2026-06-22T00:46:25.6829694Z             {
2026-06-22T00:46:25.6829837Z               "path": "crates/spt/tests/gateway_owner_shell_e2e.rs",
2026-06-22T00:46:25.6829928Z               "line": 23
2026-06-22T00:46:25.6830013Z             }
2026-06-22T00:46:25.6830099Z           ]
2026-06-22T00:46:25.6830171Z         },
2026-06-22T00:46:25.6830252Z         "unit": {
2026-06-22T00:46:25.6830333Z           "complete": true,
2026-06-22T00:46:25.6830433Z           "evidence": [
2026-06-22T00:46:25.6830515Z             {
2026-06-22T00:46:25.6830638Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T00:46:25.6830719Z               "line": 803
2026-06-22T00:46:25.6830806Z             }
2026-06-22T00:46:25.6830882Z           ]
2026-06-22T00:46:25.6830957Z         }
2026-06-22T00:46:25.6831039Z       }
2026-06-22T00:46:25.6831121Z     },
2026-06-22T00:46:25.6831202Z     {
2026-06-22T00:46:25.6831295Z       "id": "REQ-START-1",
2026-06-22T00:46:25.6831491Z       "title": "Adapters never resolve SPT_HOME; binary on PATH; api bridging only",
2026-06-22T00:46:25.6831587Z       "requiredStages": [
2026-06-22T00:46:25.6831672Z         "impl",
2026-06-22T00:46:25.6831748Z         "unit"
2026-06-22T00:46:25.6831820Z       ],
2026-06-22T00:46:25.6831906Z       "stages": {
2026-06-22T00:46:25.6831996Z         "doc": {
2026-06-22T00:46:25.6832077Z           "complete": false,
2026-06-22T00:46:25.6832164Z           "evidence": []
2026-06-22T00:46:25.6832240Z         },
2026-06-22T00:46:25.6832325Z         "impl": {
2026-06-22T00:46:25.6832411Z           "complete": true,
2026-06-22T00:46:25.6832502Z           "evidence": [
2026-06-22T00:46:25.6832583Z             {
2026-06-22T00:46:25.6832702Z               "path": "crates/spt-store/src/seed.rs",
2026-06-22T00:46:25.6832798Z               "line": 16
2026-06-22T00:46:25.6832878Z             }
2026-06-22T00:46:25.6832964Z           ]
2026-06-22T00:46:25.6833046Z         },
2026-06-22T00:46:25.6833131Z         "int": {
2026-06-22T00:46:25.6833226Z           "complete": false,
2026-06-22T00:46:25.6833302Z           "evidence": []
2026-06-22T00:46:25.6833375Z         },
2026-06-22T00:46:25.6833460Z         "unit": {
2026-06-22T00:46:25.6833550Z           "complete": true,
2026-06-22T00:46:25.6833635Z           "evidence": [
2026-06-22T00:46:25.6833721Z             {
2026-06-22T00:46:25.6833825Z               "path": "crates/spt-store/src/seed.rs",
2026-06-22T00:46:25.6833909Z               "line": 48
2026-06-22T00:46:25.6834000Z             },
2026-06-22T00:46:25.6834082Z             {
2026-06-22T00:46:25.6834191Z               "path": "crates/spt-store/src/seed.rs",
2026-06-22T00:46:25.6834286Z               "line": 63
2026-06-22T00:46:25.6834363Z             }
2026-06-22T00:46:25.6834448Z           ]
2026-06-22T00:46:25.6834525Z         }
2026-06-22T00:46:25.6834605Z       }
2026-06-22T00:46:25.6834687Z     },
2026-06-22T00:46:25.6834773Z     {
2026-06-22T00:46:25.6834863Z       "id": "REQ-START-2",
2026-06-22T00:46:25.6834997Z       "title": "Harness-hosted startup: api seed then listen",
2026-06-22T00:46:25.6835106Z       "requiredStages": [
2026-06-22T00:46:25.6835183Z         "impl",
2026-06-22T00:46:25.6835264Z         "unit",
2026-06-22T00:46:25.6835350Z         "int"
2026-06-22T00:46:25.6835430Z       ],
2026-06-22T00:46:25.6835516Z       "stages": {
2026-06-22T00:46:25.6835598Z         "doc": {
2026-06-22T00:46:25.6835689Z           "complete": false,
2026-06-22T00:46:25.6835773Z           "evidence": []
2026-06-22T00:46:25.6835971Z         },
2026-06-22T00:46:25.6836051Z         "impl": {
2026-06-22T00:46:25.6836146Z           "complete": true,
2026-06-22T00:46:25.6836366Z           "evidence": [
2026-06-22T00:46:25.6836445Z             {
2026-06-22T00:46:25.6836569Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.6836650Z               "line": 16
2026-06-22T00:46:25.6836739Z             },
2026-06-22T00:46:25.6836814Z             {
2026-06-22T00:46:25.6836929Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.6837016Z               "line": 115
2026-06-22T00:46:25.6837100Z             },
2026-06-22T00:46:25.6837186Z             {
2026-06-22T00:46:25.6837292Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.6837383Z               "line": 300
2026-06-22T00:46:25.6837463Z             }
2026-06-22T00:46:25.6837550Z           ]
2026-06-22T00:46:25.6837626Z         },
2026-06-22T00:46:25.6837711Z         "int": {
2026-06-22T00:46:25.6837806Z           "complete": true,
2026-06-22T00:46:25.6837884Z           "evidence": [
2026-06-22T00:46:25.6837969Z             {
2026-06-22T00:46:25.6838083Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T00:46:25.6838165Z               "line": 186
2026-06-22T00:46:25.6838246Z             }
2026-06-22T00:46:25.6838335Z           ]
2026-06-22T00:46:25.6838417Z         },
2026-06-22T00:46:25.6838499Z         "unit": {
2026-06-22T00:46:25.6838598Z           "complete": true,
2026-06-22T00:46:25.6838674Z           "evidence": [
2026-06-22T00:46:25.6838756Z             {
2026-06-22T00:46:25.6838862Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.6839031Z               "line": 590
2026-06-22T00:46:25.6839117Z             },
2026-06-22T00:46:25.6839203Z             {
2026-06-22T00:46:25.6839319Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.6839409Z               "line": 623
2026-06-22T00:46:25.6839491Z             }
2026-06-22T00:46:25.6839578Z           ]
2026-06-22T00:46:25.6839667Z         }
2026-06-22T00:46:25.6839753Z       }
2026-06-22T00:46:25.6839844Z     },
2026-06-22T00:46:25.6839930Z     {
2026-06-22T00:46:25.6840011Z       "id": "REQ-START-3",
2026-06-22T00:46:25.6840178Z       "title": "spt-hosted startup: spawn-session then api bind (no file)",
2026-06-22T00:46:25.6840273Z       "requiredStages": [
2026-06-22T00:46:25.6840363Z         "impl",
2026-06-22T00:46:25.6840479Z         "unit",
2026-06-22T00:46:25.6840593Z         "int"
2026-06-22T00:46:25.6840712Z       ],
2026-06-22T00:46:25.6840831Z       "stages": {
2026-06-22T00:46:25.6840964Z         "doc": {
2026-06-22T00:46:25.6841061Z           "complete": false,
2026-06-22T00:46:25.6841160Z           "evidence": []
2026-06-22T00:46:25.6841241Z         },
2026-06-22T00:46:25.6841322Z         "impl": {
2026-06-22T00:46:25.6841419Z           "complete": true,
2026-06-22T00:46:25.6841493Z           "evidence": [
2026-06-22T00:46:25.6841589Z             {
2026-06-22T00:46:25.6841715Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T00:46:25.6841808Z               "line": 23
2026-06-22T00:46:25.6841894Z             },
2026-06-22T00:46:25.6841979Z             {
2026-06-22T00:46:25.6842090Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T00:46:25.6842179Z               "line": 205
2026-06-22T00:46:25.6842260Z             },
2026-06-22T00:46:25.6842342Z             {
2026-06-22T00:46:25.6842452Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T00:46:25.6842551Z               "line": 221
2026-06-22T00:46:25.6842633Z             },
2026-06-22T00:46:25.6842714Z             {
2026-06-22T00:46:25.6842819Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.6842904Z               "line": 17
2026-06-22T00:46:25.6842991Z             },
2026-06-22T00:46:25.6843057Z             {
2026-06-22T00:46:25.6843176Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.6843257Z               "line": 35
2026-06-22T00:46:25.6843448Z             },
2026-06-22T00:46:25.6843529Z             {
2026-06-22T00:46:25.6843635Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.6843824Z               "line": 116
2026-06-22T00:46:25.6843901Z             }
2026-06-22T00:46:25.6843978Z           ]
2026-06-22T00:46:25.6844058Z         },
2026-06-22T00:46:25.6844133Z         "int": {
2026-06-22T00:46:25.6844219Z           "complete": true,
2026-06-22T00:46:25.6844300Z           "evidence": [
2026-06-22T00:46:25.6844380Z             {
2026-06-22T00:46:25.6844484Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T00:46:25.6844584Z               "line": 488
2026-06-22T00:46:25.6844657Z             }
2026-06-22T00:46:25.6844737Z           ]
2026-06-22T00:46:25.6844812Z         },
2026-06-22T00:46:25.6844899Z         "unit": {
2026-06-22T00:46:25.6844995Z           "complete": true,
2026-06-22T00:46:25.6845075Z           "evidence": [
2026-06-22T00:46:25.6845160Z             {
2026-06-22T00:46:25.6845281Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T00:46:25.6845366Z               "line": 381
2026-06-22T00:46:25.6845456Z             },
2026-06-22T00:46:25.6845544Z             {
2026-06-22T00:46:25.6845662Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T00:46:25.6845743Z               "line": 402
2026-06-22T00:46:25.6845829Z             },
2026-06-22T00:46:25.6845910Z             {
2026-06-22T00:46:25.6846034Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T00:46:25.6846109Z               "line": 412
2026-06-22T00:46:25.6846188Z             },
2026-06-22T00:46:25.6846277Z             {
2026-06-22T00:46:25.6846387Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.6846483Z               "line": 591
2026-06-22T00:46:25.6846564Z             },
2026-06-22T00:46:25.6846653Z             {
2026-06-22T00:46:25.6846764Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.6846860Z               "line": 624
2026-06-22T00:46:25.6846958Z             },
2026-06-22T00:46:25.6847039Z             {
2026-06-22T00:46:25.6847158Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.6847238Z               "line": 657
2026-06-22T00:46:25.6847327Z             }
2026-06-22T00:46:25.6847413Z           ]
2026-06-22T00:46:25.6847494Z         }
2026-06-22T00:46:25.6847576Z       }
2026-06-22T00:46:25.6847661Z     },
2026-06-22T00:46:25.6847746Z     {
2026-06-22T00:46:25.6847829Z       "id": "REQ-START-4",
2026-06-22T00:46:25.6847975Z       "title": "Adapter-injected env aliases (SPT/OWL/LIVE)",
2026-06-22T00:46:25.6848061Z       "requiredStages": [
2026-06-22T00:46:25.6848158Z         "impl",
2026-06-22T00:46:25.6848253Z         "unit"
2026-06-22T00:46:25.6848333Z       ],
2026-06-22T00:46:25.6848420Z       "stages": {
2026-06-22T00:46:25.6848501Z         "doc": {
2026-06-22T00:46:25.6848596Z           "complete": false,
2026-06-22T00:46:25.6848682Z           "evidence": []
2026-06-22T00:46:25.6848768Z         },
2026-06-22T00:46:25.6848853Z         "impl": {
2026-06-22T00:46:25.6849050Z           "complete": true,
2026-06-22T00:46:25.6849150Z           "evidence": [
2026-06-22T00:46:25.6849229Z             {
2026-06-22T00:46:25.6849374Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.6849465Z               "line": 585
2026-06-22T00:46:25.6849548Z             }
2026-06-22T00:46:25.6849634Z           ]
2026-06-22T00:46:25.6849705Z         },
2026-06-22T00:46:25.6849796Z         "int": {
2026-06-22T00:46:25.6849884Z           "complete": false,
2026-06-22T00:46:25.6849984Z           "evidence": []
2026-06-22T00:46:25.6850061Z         },
2026-06-22T00:46:25.6850148Z         "unit": {
2026-06-22T00:46:25.6850242Z           "complete": true,
2026-06-22T00:46:25.6850318Z           "evidence": [
2026-06-22T00:46:25.6850405Z             {
2026-06-22T00:46:25.6850523Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.6850618Z               "line": 1026
2026-06-22T00:46:25.6850819Z             }
2026-06-22T00:46:25.6850904Z           ]
2026-06-22T00:46:25.6850991Z         }
2026-06-22T00:46:25.6851158Z       }
2026-06-22T00:46:25.6851248Z     },
2026-06-22T00:46:25.6851335Z     {
2026-06-22T00:46:25.6851444Z       "id": "REQ-START-5",
2026-06-22T00:46:25.6854224Z       "title": "Adapter-agnostic harness-hosted seed + bind-time adapter/profile resolution (ADR-0021): `api seed` carries only parent_pid + session_id (+ optional cwd), no --adapter — a pure \"a harness session exists at this pid\" record; --adapter becomes an OPTIONAL override across the whole api group (an explicit name[:profile] for adapter dev, never required). Omitted, listen/poll resolve the owning adapter/profile AT BIND as a pure read against the live registry — never a seed-time snapshot that can drift: seed parent_pid → exe basename → host_binaries candidate set (REQ-MANIFEST-8) → active-profile pointer (REQ-INSTALL-12) primary, else greatest-registered_at_ms candidate base profile (name-asc tie) → friendly zero-match error. Covers BOTH LiveAgent (listen) and ReadyAgent (poll) bringup. Restores legacy parity: `$LIVE start <id>` → `$SPT listen <id>` with no mandatory --adapter, one generic SessionStart hook per harness binary. (v0.9.0)",
2026-06-22T00:46:25.6854351Z       "requiredStages": [
2026-06-22T00:46:25.6854432Z         "doc",
2026-06-22T00:46:25.6854520Z         "impl",
2026-06-22T00:46:25.6854604Z         "unit",
2026-06-22T00:46:25.6854699Z         "int"
2026-06-22T00:46:25.6854779Z       ],
2026-06-22T00:46:25.6854870Z       "stages": {
2026-06-22T00:46:25.6854940Z         "doc": {
2026-06-22T00:46:25.6855034Z           "complete": true,
2026-06-22T00:46:25.6855120Z           "evidence": [
2026-06-22T00:46:25.6855202Z             {
2026-06-22T00:46:25.6855297Z               "path": "CONTEXT.md",
2026-06-22T00:46:25.6855387Z               "line": 176
2026-06-22T00:46:25.6855469Z             },
2026-06-22T00:46:25.6855550Z             {
2026-06-22T00:46:25.6855692Z               "path": "docs-site/src/harness-contract/api.md",
2026-06-22T00:46:25.6855799Z               "line": 28
2026-06-22T00:46:25.6855889Z             }
2026-06-22T00:46:25.6855974Z           ]
2026-06-22T00:46:25.6856060Z         },
2026-06-22T00:46:25.6856151Z         "impl": {
2026-06-22T00:46:25.6856241Z           "complete": true,
2026-06-22T00:46:25.6856331Z           "evidence": [
2026-06-22T00:46:25.6856418Z             {
2026-06-22T00:46:25.6856541Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T00:46:25.6856637Z               "line": 26
2026-06-22T00:46:25.6856718Z             },
2026-06-22T00:46:25.6856804Z             {
2026-06-22T00:46:25.6856923Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T00:46:25.6857014Z               "line": 212
2026-06-22T00:46:25.6857100Z             },
2026-06-22T00:46:25.6857175Z             {
2026-06-22T00:46:25.6857295Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T00:46:25.6857382Z               "line": 221
2026-06-22T00:46:25.6857476Z             },
2026-06-22T00:46:25.6857556Z             {
2026-06-22T00:46:25.6857680Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T00:46:25.6857770Z               "line": 485
2026-06-22T00:46:25.6857845Z             },
2026-06-22T00:46:25.6857920Z             {
2026-06-22T00:46:25.6858026Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.6858112Z               "line": 36
2026-06-22T00:46:25.6858198Z             },
2026-06-22T00:46:25.6858278Z             {
2026-06-22T00:46:25.6858389Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.6858475Z               "line": 118
2026-06-22T00:46:25.6858564Z             },
2026-06-22T00:46:25.6858641Z             {
2026-06-22T00:46:25.6858756Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T00:46:25.6858841Z               "line": 329
2026-06-22T00:46:25.6858927Z             }
2026-06-22T00:46:25.6859170Z           ]
2026-06-22T00:46:25.6859428Z         },
2026-06-22T00:46:25.6859523Z         "int": {
2026-06-22T00:46:25.6859605Z           "complete": true,
2026-06-22T00:46:25.6859789Z           "evidence": [
2026-06-22T00:46:25.6859871Z             {
2026-06-22T00:46:25.6860001Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-22T00:46:25.6860095Z               "line": 17
2026-06-22T00:46:25.6860170Z             }
2026-06-22T00:46:25.6860251Z           ]
2026-06-22T00:46:25.6860332Z         },
2026-06-22T00:46:25.6860421Z         "unit": {
2026-06-22T00:46:25.6860511Z           "complete": true,
2026-06-22T00:46:25.6860592Z           "evidence": [
2026-06-22T00:46:25.6860684Z             {
2026-06-22T00:46:25.6860802Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T00:46:25.6860888Z               "line": 358
2026-06-22T00:46:25.6860970Z             },
2026-06-22T00:46:25.6861051Z             {
2026-06-22T00:46:25.6861169Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T00:46:25.6861275Z               "line": 371
2026-06-22T00:46:25.6861351Z             },
2026-06-22T00:46:25.6861426Z             {
2026-06-22T00:46:25.6861547Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T00:46:25.6861623Z               "line": 597
2026-06-22T00:46:25.6861709Z             }
2026-06-22T00:46:25.6861789Z           ]
2026-06-22T00:46:25.6861876Z         }
2026-06-22T00:46:25.6861966Z       }
2026-06-22T00:46:25.6862047Z     },
2026-06-22T00:46:25.6862128Z     {
2026-06-22T00:46:25.6862210Z       "id": "REQ-STORE-1",
2026-06-22T00:46:25.6863084Z       "title": "spt-store::BranchStore (git branch as versioned KV; commit=checkpoint/tip=resume, atomic multi-key, merge-native sync) is the substrate for coarse/durable/audited state (context, registry snapshot+distribution, daemon checkpoint); hot paths (B5 fsync journal) + indexed queries (SQLite spool) excluded (ADR-0011)",
2026-06-22T00:46:25.6863181Z       "requiredStages": [
2026-06-22T00:46:25.6863263Z         "impl",
2026-06-22T00:46:25.6863357Z         "unit"
2026-06-22T00:46:25.6863438Z       ],
2026-06-22T00:46:25.6863534Z       "stages": {
2026-06-22T00:46:25.6863615Z         "doc": {
2026-06-22T00:46:25.6863695Z           "complete": false,
2026-06-22T00:46:25.6863787Z           "evidence": []
2026-06-22T00:46:25.6863877Z         },
2026-06-22T00:46:25.6863971Z         "impl": {
2026-06-22T00:46:25.6864063Z           "complete": true,
2026-06-22T00:46:25.6864145Z           "evidence": [
2026-06-22T00:46:25.6864225Z             {
2026-06-22T00:46:25.6864353Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T00:46:25.6864435Z               "line": 23
2026-06-22T00:46:25.6864516Z             },
2026-06-22T00:46:25.6864597Z             {
2026-06-22T00:46:25.6864717Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T00:46:25.6864798Z               "line": 46
2026-06-22T00:46:25.6864882Z             },
2026-06-22T00:46:25.6864959Z             {
2026-06-22T00:46:25.6865070Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T00:46:25.6865155Z               "line": 97
2026-06-22T00:46:25.6865254Z             },
2026-06-22T00:46:25.6865344Z             {
2026-06-22T00:46:25.6865472Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T00:46:25.6865552Z               "line": 125
2026-06-22T00:46:25.6865637Z             },
2026-06-22T00:46:25.6865719Z             {
2026-06-22T00:46:25.6865838Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T00:46:25.6865928Z               "line": 207
2026-06-22T00:46:25.6866019Z             },
2026-06-22T00:46:25.6866110Z             {
2026-06-22T00:46:25.6866233Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T00:46:25.6866320Z               "line": 231
2026-06-22T00:46:25.6866406Z             },
2026-06-22T00:46:25.6866491Z             {
2026-06-22T00:46:25.6866615Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T00:46:25.6866702Z               "line": 467
2026-06-22T00:46:25.6866887Z             },
2026-06-22T00:46:25.6866978Z             {
2026-06-22T00:46:25.6867092Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T00:46:25.6867244Z               "line": 25
2026-06-22T00:46:25.6867332Z             },
2026-06-22T00:46:25.6867416Z             {
2026-06-22T00:46:25.6867526Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T00:46:25.6867613Z               "line": 120
2026-06-22T00:46:25.6867693Z             },
2026-06-22T00:46:25.6867778Z             {
2026-06-22T00:46:25.6867904Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T00:46:25.6867989Z               "line": 148
2026-06-22T00:46:25.6868069Z             },
2026-06-22T00:46:25.6868149Z             {
2026-06-22T00:46:25.6868269Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T00:46:25.6868353Z               "line": 165
2026-06-22T00:46:25.6868433Z             },
2026-06-22T00:46:25.6868518Z             {
2026-06-22T00:46:25.6868649Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T00:46:25.6868748Z               "line": 180
2026-06-22T00:46:25.6868833Z             },
2026-06-22T00:46:25.6868916Z             {
2026-06-22T00:46:25.6869120Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T00:46:25.6869206Z               "line": 198
2026-06-22T00:46:25.6869311Z             },
2026-06-22T00:46:25.6869396Z             {
2026-06-22T00:46:25.6869516Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T00:46:25.6869607Z               "line": 207
2026-06-22T00:46:25.6869687Z             },
2026-06-22T00:46:25.6869763Z             {
2026-06-22T00:46:25.6869884Z               "path": "crates/spt-store/src/project.rs",
2026-06-22T00:46:25.6869973Z               "line": 16
2026-06-22T00:46:25.6870054Z             },
2026-06-22T00:46:25.6870131Z             {
2026-06-22T00:46:25.6870256Z               "path": "crates/spt-store/src/project.rs",
2026-06-22T00:46:25.6870340Z               "line": 63
2026-06-22T00:46:25.6870431Z             }
2026-06-22T00:46:25.6870514Z           ]
2026-06-22T00:46:25.6870599Z         },
2026-06-22T00:46:25.6870678Z         "int": {
2026-06-22T00:46:25.6870778Z           "complete": false,
2026-06-22T00:46:25.6870873Z           "evidence": []
2026-06-22T00:46:25.6870953Z         },
2026-06-22T00:46:25.6871033Z         "unit": {
2026-06-22T00:46:25.6871119Z           "complete": true,
2026-06-22T00:46:25.6871201Z           "evidence": [
2026-06-22T00:46:25.6871287Z             {
2026-06-22T00:46:25.6871410Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T00:46:25.6871506Z               "line": 584
2026-06-22T00:46:25.6871582Z             },
2026-06-22T00:46:25.6871667Z             {
2026-06-22T00:46:25.6871783Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T00:46:25.6871878Z               "line": 594
2026-06-22T00:46:25.6871959Z             },
2026-06-22T00:46:25.6872039Z             {
2026-06-22T00:46:25.6872159Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T00:46:25.6872249Z               "line": 616
2026-06-22T00:46:25.6872339Z             },
2026-06-22T00:46:25.6872422Z             {
2026-06-22T00:46:25.6872545Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T00:46:25.6872640Z               "line": 632
2026-06-22T00:46:25.6872712Z             },
2026-06-22T00:46:25.6872799Z             {
2026-06-22T00:46:25.6872902Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T00:46:25.6872993Z               "line": 690
2026-06-22T00:46:25.6873075Z             },
2026-06-22T00:46:25.6873165Z             {
2026-06-22T00:46:25.6873279Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T00:46:25.6873366Z               "line": 472
2026-06-22T00:46:25.6873452Z             },
2026-06-22T00:46:25.6873536Z             {
2026-06-22T00:46:25.6873659Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T00:46:25.6873869Z               "line": 507
2026-06-22T00:46:25.6873960Z             },
2026-06-22T00:46:25.6874041Z             {
2026-06-22T00:46:25.6874260Z               "path": "crates/spt-store/src/project.rs",
2026-06-22T00:46:25.6874352Z               "line": 120
2026-06-22T00:46:25.6874432Z             },
2026-06-22T00:46:25.6874513Z             {
2026-06-22T00:46:25.6874623Z               "path": "crates/spt-store/src/project.rs",
2026-06-22T00:46:25.6874714Z               "line": 128
2026-06-22T00:46:25.6874799Z             }
2026-06-22T00:46:25.6874870Z           ]
2026-06-22T00:46:25.6874962Z         }
2026-06-22T00:46:25.6875039Z       }
2026-06-22T00:46:25.6875123Z     },
2026-06-22T00:46:25.6875199Z     {
2026-06-22T00:46:25.6875296Z       "id": "REQ-SUBNET-1",
2026-06-22T00:46:25.6875611Z       "title": "spt subnet noun namespace: status view (bare + status [NAME] [--nodes]), create (QR/otpauth), show-code; spt pair deleted",
2026-06-22T00:46:25.6875697Z       "requiredStages": [
2026-06-22T00:46:25.6875800Z         "impl",
2026-06-22T00:46:25.6875880Z         "unit"
2026-06-22T00:46:25.6875966Z       ],
2026-06-22T00:46:25.6876051Z       "stages": {
2026-06-22T00:46:25.6876141Z         "doc": {
2026-06-22T00:46:25.6879742Z           "complete": false,
2026-06-22T00:46:25.6879857Z           "evidence": []
2026-06-22T00:46:25.6879942Z         },
2026-06-22T00:46:25.6880027Z         "impl": {
2026-06-22T00:46:25.6880125Z           "complete": true,
2026-06-22T00:46:25.6880204Z           "evidence": [
2026-06-22T00:46:25.6880285Z             {
2026-06-22T00:46:25.6880435Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.6880519Z               "line": 281
2026-06-22T00:46:25.6880600Z             },
2026-06-22T00:46:25.6880686Z             {
2026-06-22T00:46:25.6880816Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.6880905Z               "line": 651
2026-06-22T00:46:25.6880986Z             },
2026-06-22T00:46:25.6881069Z             {
2026-06-22T00:46:25.6881182Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6881262Z               "line": 3399
2026-06-22T00:46:25.6881352Z             },
2026-06-22T00:46:25.6881433Z             {
2026-06-22T00:46:25.6881536Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6881617Z               "line": 3709
2026-06-22T00:46:25.6881703Z             },
2026-06-22T00:46:25.6881785Z             {
2026-06-22T00:46:25.6881889Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6881965Z               "line": 3728
2026-06-22T00:46:25.6882047Z             },
2026-06-22T00:46:25.6882119Z             {
2026-06-22T00:46:25.6882223Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6882333Z               "line": 3792
2026-06-22T00:46:25.6882414Z             },
2026-06-22T00:46:25.6882500Z             {
2026-06-22T00:46:25.6882594Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6882686Z               "line": 3834
2026-06-22T00:46:25.6882776Z             },
2026-06-22T00:46:25.6882866Z             {
2026-06-22T00:46:25.6882972Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6883062Z               "line": 4023
2026-06-22T00:46:25.6883143Z             },
2026-06-22T00:46:25.6883224Z             {
2026-06-22T00:46:25.6883330Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6883420Z               "line": 4093
2026-06-22T00:46:25.6883506Z             },
2026-06-22T00:46:25.6883592Z             {
2026-06-22T00:46:25.6883683Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6883772Z               "line": 4317
2026-06-22T00:46:25.6883858Z             },
2026-06-22T00:46:25.6883946Z             {
2026-06-22T00:46:25.6884035Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6884129Z               "line": 4961
2026-06-22T00:46:25.6884215Z             },
2026-06-22T00:46:25.6884301Z             {
2026-06-22T00:46:25.6884406Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T00:46:25.6884640Z               "line": 418
2026-06-22T00:46:25.6884731Z             }
2026-06-22T00:46:25.6884815Z           ]
2026-06-22T00:46:25.6885002Z         },
2026-06-22T00:46:25.6885088Z         "int": {
2026-06-22T00:46:25.6885183Z           "complete": false,
2026-06-22T00:46:25.6885279Z           "evidence": []
2026-06-22T00:46:25.6885359Z         },
2026-06-22T00:46:25.6885444Z         "unit": {
2026-06-22T00:46:25.6885532Z           "complete": true,
2026-06-22T00:46:25.6885623Z           "evidence": [
2026-06-22T00:46:25.6885703Z             {
2026-06-22T00:46:25.6885832Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.6885914Z               "line": 1584
2026-06-22T00:46:25.6885998Z             },
2026-06-22T00:46:25.6886079Z             {
2026-06-22T00:46:25.6886190Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6886280Z               "line": 9964
2026-06-22T00:46:25.6886364Z             },
2026-06-22T00:46:25.6886445Z             {
2026-06-22T00:46:25.6886555Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6886635Z               "line": 10134
2026-06-22T00:46:25.6886725Z             },
2026-06-22T00:46:25.6886806Z             {
2026-06-22T00:46:25.6886906Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6886996Z               "line": 10141
2026-06-22T00:46:25.6887082Z             },
2026-06-22T00:46:25.6887168Z             {
2026-06-22T00:46:25.6887264Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6887358Z               "line": 10194
2026-06-22T00:46:25.6887440Z             },
2026-06-22T00:46:25.6887522Z             {
2026-06-22T00:46:25.6887630Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6887716Z               "line": 10211
2026-06-22T00:46:25.6887798Z             },
2026-06-22T00:46:25.6887869Z             {
2026-06-22T00:46:25.6887973Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6888059Z               "line": 10241
2026-06-22T00:46:25.6888142Z             },
2026-06-22T00:46:25.6888226Z             {
2026-06-22T00:46:25.6888326Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6888404Z               "line": 10357
2026-06-22T00:46:25.6888485Z             },
2026-06-22T00:46:25.6888569Z             {
2026-06-22T00:46:25.6888670Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6888762Z               "line": 10508
2026-06-22T00:46:25.6888846Z             }
2026-06-22T00:46:25.6888918Z           ]
2026-06-22T00:46:25.6889091Z         }
2026-06-22T00:46:25.6889175Z       }
2026-06-22T00:46:25.6889251Z     },
2026-06-22T00:46:25.6889356Z     {
2026-06-22T00:46:25.6889460Z       "id": "REQ-SUBNET-2",
2026-06-22T00:46:25.6889692Z       "title": "Guided join e2e: spt subnet join CLI initiator + always-on daemon pairing responder",
2026-06-22T00:46:25.6889788Z       "requiredStages": [
2026-06-22T00:46:25.6889873Z         "impl",
2026-06-22T00:46:25.6889958Z         "unit",
2026-06-22T00:46:25.6890074Z         "int"
2026-06-22T00:46:25.6890159Z       ],
2026-06-22T00:46:25.6890245Z       "stages": {
2026-06-22T00:46:25.6890341Z         "doc": {
2026-06-22T00:46:25.6890421Z           "complete": true,
2026-06-22T00:46:25.6890507Z           "evidence": [
2026-06-22T00:46:25.6890592Z             {
2026-06-22T00:46:25.6890750Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-22T00:46:25.6890831Z               "line": 60
2026-06-22T00:46:25.6890912Z             }
2026-06-22T00:46:25.6890990Z           ]
2026-06-22T00:46:25.6891070Z         },
2026-06-22T00:46:25.6891155Z         "impl": {
2026-06-22T00:46:25.6891236Z           "complete": true,
2026-06-22T00:46:25.6891333Z           "evidence": [
2026-06-22T00:46:25.6891418Z             {
2026-06-22T00:46:25.6891533Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T00:46:25.6891614Z               "line": 980
2026-06-22T00:46:25.6891690Z             },
2026-06-22T00:46:25.6891780Z             {
2026-06-22T00:46:25.6892003Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.6892096Z               "line": 2222
2026-06-22T00:46:25.6892258Z             },
2026-06-22T00:46:25.6892340Z             {
2026-06-22T00:46:25.6892459Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T00:46:25.6892545Z               "line": 683
2026-06-22T00:46:25.6892626Z             },
2026-06-22T00:46:25.6892702Z             {
2026-06-22T00:46:25.6892816Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T00:46:25.6892898Z               "line": 867
2026-06-22T00:46:25.6892979Z             },
2026-06-22T00:46:25.6893065Z             {
2026-06-22T00:46:25.6893179Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T00:46:25.6893270Z               "line": 26
2026-06-22T00:46:25.6893351Z             },
2026-06-22T00:46:25.6893436Z             {
2026-06-22T00:46:25.6893547Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T00:46:25.6893622Z               "line": 60
2026-06-22T00:46:25.6893708Z             },
2026-06-22T00:46:25.6893789Z             {
2026-06-22T00:46:25.6893919Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T00:46:25.6894003Z               "line": 168
2026-06-22T00:46:25.6894085Z             },
2026-06-22T00:46:25.6894172Z             {
2026-06-22T00:46:25.6894276Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T00:46:25.6894366Z               "line": 295
2026-06-22T00:46:25.6894448Z             },
2026-06-22T00:46:25.6894534Z             {
2026-06-22T00:46:25.6894642Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T00:46:25.6894736Z               "line": 417
2026-06-22T00:46:25.6894818Z             },
2026-06-22T00:46:25.6894900Z             {
2026-06-22T00:46:25.6895037Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T00:46:25.6895123Z               "line": 252
2026-06-22T00:46:25.6895210Z             },
2026-06-22T00:46:25.6895291Z             {
2026-06-22T00:46:25.6895399Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6895491Z               "line": 3755
2026-06-22T00:46:25.6895581Z             },
2026-06-22T00:46:25.6895671Z             {
2026-06-22T00:46:25.6895772Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6895858Z               "line": 4256
2026-06-22T00:46:25.6895944Z             },
2026-06-22T00:46:25.6896024Z             {
2026-06-22T00:46:25.6896125Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6896197Z               "line": 4892
2026-06-22T00:46:25.6896287Z             }
2026-06-22T00:46:25.6896368Z           ]
2026-06-22T00:46:25.6896454Z         },
2026-06-22T00:46:25.6896544Z         "int": {
2026-06-22T00:46:25.6896630Z           "complete": true,
2026-06-22T00:46:25.6896721Z           "evidence": [
2026-06-22T00:46:25.6896803Z             {
2026-06-22T00:46:25.6896929Z               "path": "crates/spt-daemon/tests/pairjoin.rs",
2026-06-22T00:46:25.6897014Z               "line": 22
2026-06-22T00:46:25.6897120Z             },
2026-06-22T00:46:25.6897204Z             {
2026-06-22T00:46:25.6897332Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T00:46:25.6897423Z               "line": 645
2026-06-22T00:46:25.6897496Z             },
2026-06-22T00:46:25.6897580Z             {
2026-06-22T00:46:25.6897680Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T00:46:25.6897767Z               "line": 887
2026-06-22T00:46:25.6897852Z             }
2026-06-22T00:46:25.6897928Z           ]
2026-06-22T00:46:25.6898015Z         },
2026-06-22T00:46:25.6898096Z         "unit": {
2026-06-22T00:46:25.6898186Z           "complete": true,
2026-06-22T00:46:25.6898271Z           "evidence": [
2026-06-22T00:46:25.6898353Z             {
2026-06-22T00:46:25.6898477Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T00:46:25.6898552Z               "line": 586
2026-06-22T00:46:25.6898629Z             },
2026-06-22T00:46:25.6898702Z             {
2026-06-22T00:46:25.6898901Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6899064Z               "line": 10004
2026-06-22T00:46:25.6899240Z             },
2026-06-22T00:46:25.6899341Z             {
2026-06-22T00:46:25.6899458Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6899540Z               "line": 10715
2026-06-22T00:46:25.6899622Z             }
2026-06-22T00:46:25.6899703Z           ]
2026-06-22T00:46:25.6899782Z         }
2026-06-22T00:46:25.6899868Z       }
2026-06-22T00:46:25.6899944Z     },
2026-06-22T00:46:25.6900025Z     {
2026-06-22T00:46:25.6900118Z       "id": "REQ-SUBNET-3",
2026-06-22T00:46:25.6900386Z       "title": "Node labels: hostname-default, gossiped, addressable in @node qualifiers (refuse-on-ambiguity)",
2026-06-22T00:46:25.6900485Z       "requiredStages": [
2026-06-22T00:46:25.6900562Z         "impl",
2026-06-22T00:46:25.6900648Z         "unit"
2026-06-22T00:46:25.6900734Z       ],
2026-06-22T00:46:25.6900819Z       "stages": {
2026-06-22T00:46:25.6900911Z         "doc": {
2026-06-22T00:46:25.6900996Z           "complete": false,
2026-06-22T00:46:25.6901100Z           "evidence": []
2026-06-22T00:46:25.6901182Z         },
2026-06-22T00:46:25.6901264Z         "impl": {
2026-06-22T00:46:25.6901348Z           "complete": true,
2026-06-22T00:46:25.6901429Z           "evidence": [
2026-06-22T00:46:25.6901511Z             {
2026-06-22T00:46:25.6901635Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.6901725Z               "line": 152
2026-06-22T00:46:25.6901811Z             },
2026-06-22T00:46:25.6901889Z             {
2026-06-22T00:46:25.6902011Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.6902093Z               "line": 299
2026-06-22T00:46:25.6902174Z             },
2026-06-22T00:46:25.6902260Z             {
2026-06-22T00:46:25.6902387Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.6902478Z               "line": 443
2026-06-22T00:46:25.6902568Z             },
2026-06-22T00:46:25.6902656Z             {
2026-06-22T00:46:25.6902770Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.6902857Z               "line": 532
2026-06-22T00:46:25.6902929Z             },
2026-06-22T00:46:25.6903014Z             {
2026-06-22T00:46:25.6903128Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.6903210Z               "line": 125
2026-06-22T00:46:25.6903305Z             },
2026-06-22T00:46:25.6903390Z             {
2026-06-22T00:46:25.6903515Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.6903601Z               "line": 253
2026-06-22T00:46:25.6903686Z             },
2026-06-22T00:46:25.6903763Z             {
2026-06-22T00:46:25.6903877Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.6903968Z               "line": 264
2026-06-22T00:46:25.6904053Z             },
2026-06-22T00:46:25.6904145Z             {
2026-06-22T00:46:25.6904263Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.6904349Z               "line": 285
2026-06-22T00:46:25.6904446Z             },
2026-06-22T00:46:25.6904521Z             {
2026-06-22T00:46:25.6904650Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.6904737Z               "line": 621
2026-06-22T00:46:25.6904822Z             },
2026-06-22T00:46:25.6904892Z             {
2026-06-22T00:46:25.6904998Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.6905085Z               "line": 680
2026-06-22T00:46:25.6905169Z             },
2026-06-22T00:46:25.6905250Z             {
2026-06-22T00:46:25.6905368Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T00:46:25.6905451Z               "line": 61
2026-06-22T00:46:25.6905536Z             },
2026-06-22T00:46:25.6905621Z             {
2026-06-22T00:46:25.6905731Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T00:46:25.6905822Z               "line": 90
2026-06-22T00:46:25.6906089Z             },
2026-06-22T00:46:25.6906170Z             {
2026-06-22T00:46:25.6906371Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T00:46:25.6906461Z               "line": 125
2026-06-22T00:46:25.6906551Z             },
2026-06-22T00:46:25.6906632Z             {
2026-06-22T00:46:25.6906747Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-22T00:46:25.6906828Z               "line": 9
2026-06-22T00:46:25.6906908Z             },
2026-06-22T00:46:25.6906987Z             {
2026-06-22T00:46:25.6907086Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6907176Z               "line": 4093
2026-06-22T00:46:25.6907257Z             },
2026-06-22T00:46:25.6907334Z             {
2026-06-22T00:46:25.6907443Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T00:46:25.6907523Z               "line": 445
2026-06-22T00:46:25.6907604Z             }
2026-06-22T00:46:25.6907690Z           ]
2026-06-22T00:46:25.6907774Z         },
2026-06-22T00:46:25.6907863Z         "int": {
2026-06-22T00:46:25.6907950Z           "complete": false,
2026-06-22T00:46:25.6908036Z           "evidence": []
2026-06-22T00:46:25.6908117Z         },
2026-06-22T00:46:25.6908202Z         "unit": {
2026-06-22T00:46:25.6908293Z           "complete": true,
2026-06-22T00:46:25.6908379Z           "evidence": [
2026-06-22T00:46:25.6908460Z             {
2026-06-22T00:46:25.6908580Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.6908670Z               "line": 1356
2026-06-22T00:46:25.6908751Z             },
2026-06-22T00:46:25.6908836Z             {
2026-06-22T00:46:25.6909094Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.6909189Z               "line": 1713
2026-06-22T00:46:25.6909276Z             },
2026-06-22T00:46:25.6909361Z             {
2026-06-22T00:46:25.6909490Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T00:46:25.6909577Z               "line": 892
2026-06-22T00:46:25.6909671Z             },
2026-06-22T00:46:25.6909752Z             {
2026-06-22T00:46:25.6909872Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.6909962Z               "line": 991
2026-06-22T00:46:25.6910043Z             },
2026-06-22T00:46:25.6910129Z             {
2026-06-22T00:46:25.6910240Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.6910333Z               "line": 1041
2026-06-22T00:46:25.6910418Z             },
2026-06-22T00:46:25.6910495Z             {
2026-06-22T00:46:25.6910613Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.6910702Z               "line": 1100
2026-06-22T00:46:25.6910798Z             },
2026-06-22T00:46:25.6910880Z             {
2026-06-22T00:46:25.6911002Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T00:46:25.6911088Z               "line": 234
2026-06-22T00:46:25.6911180Z             },
2026-06-22T00:46:25.6911261Z             {
2026-06-22T00:46:25.6911374Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-22T00:46:25.6911466Z               "line": 49
2026-06-22T00:46:25.6911547Z             },
2026-06-22T00:46:25.6911632Z             {
2026-06-22T00:46:25.6911737Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6911819Z               "line": 10357
2026-06-22T00:46:25.6911899Z             },
2026-06-22T00:46:25.6911980Z             {
2026-06-22T00:46:25.6912086Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6912167Z               "line": 10463
2026-06-22T00:46:25.6912251Z             },
2026-06-22T00:46:25.6912338Z             {
2026-06-22T00:46:25.6912439Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6912533Z               "line": 10681
2026-06-22T00:46:25.6912610Z             }
2026-06-22T00:46:25.6912681Z           ]
2026-06-22T00:46:25.6912768Z         }
2026-06-22T00:46:25.6912848Z       }
2026-06-22T00:46:25.6912933Z     },
2026-06-22T00:46:25.6913114Z     {
2026-06-22T00:46:25.6913212Z       "id": "REQ-SUBNET-4",
2026-06-22T00:46:25.6913494Z       "title": "Subnet membership mutations elevation-gated (create = seed reveal; join = trust-boundary enrollment)",
2026-06-22T00:46:25.6913674Z       "requiredStages": [
2026-06-22T00:46:25.6913761Z         "impl",
2026-06-22T00:46:25.6913846Z         "unit"
2026-06-22T00:46:25.6913932Z       ],
2026-06-22T00:46:25.6914013Z       "stages": {
2026-06-22T00:46:25.6914094Z         "doc": {
2026-06-22T00:46:25.6914185Z           "complete": true,
2026-06-22T00:46:25.6914270Z           "evidence": [
2026-06-22T00:46:25.6914348Z             {
2026-06-22T00:46:25.6914499Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-22T00:46:25.6914594Z               "line": 60
2026-06-22T00:46:25.6914677Z             }
2026-06-22T00:46:25.6914762Z           ]
2026-06-22T00:46:25.6914843Z         },
2026-06-22T00:46:25.6914928Z         "impl": {
2026-06-22T00:46:25.6915011Z           "complete": true,
2026-06-22T00:46:25.6915114Z           "evidence": [
2026-06-22T00:46:25.6915195Z             {
2026-06-22T00:46:25.6915301Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6915386Z               "line": 3399
2026-06-22T00:46:25.6915467Z             },
2026-06-22T00:46:25.6915548Z             {
2026-06-22T00:46:25.6915650Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6915725Z               "line": 4859
2026-06-22T00:46:25.6915810Z             },
2026-06-22T00:46:25.6915895Z             {
2026-06-22T00:46:25.6915996Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6916082Z               "line": 4892
2026-06-22T00:46:25.6916167Z             }
2026-06-22T00:46:25.6916248Z           ]
2026-06-22T00:46:25.6916335Z         },
2026-06-22T00:46:25.6916411Z         "int": {
2026-06-22T00:46:25.6916500Z           "complete": false,
2026-06-22T00:46:25.6916593Z           "evidence": []
2026-06-22T00:46:25.6916673Z         },
2026-06-22T00:46:25.6916772Z         "unit": {
2026-06-22T00:46:25.6916859Z           "complete": true,
2026-06-22T00:46:25.6916936Z           "evidence": [
2026-06-22T00:46:25.6917035Z             {
2026-06-22T00:46:25.6917135Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6917232Z               "line": 10120
2026-06-22T00:46:25.6917312Z             },
2026-06-22T00:46:25.6917398Z             {
2026-06-22T00:46:25.6917498Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6917589Z               "line": 10194
2026-06-22T00:46:25.6917683Z             }
2026-06-22T00:46:25.6917760Z           ]
2026-06-22T00:46:25.6917841Z         }
2026-06-22T00:46:25.6917918Z       }
2026-06-22T00:46:25.6917998Z     },
2026-06-22T00:46:25.6918078Z     {
2026-06-22T00:46:25.6918164Z       "id": "REQ-SUBNET-5",
2026-06-22T00:46:25.6919421Z       "title": "Per-subnet serve-state: spt subnet detach <NAME> [--save] / attach <NAME> [--save] — daemon keeps running, stops/starts advertising + connecting for that subnet (peer pump + responder selective); --save persists the startup default in daemon config; the all-attached banner gains per-subnet states (M8 decision 6, --save renamed from --auto per decision 25 session)",
2026-06-22T00:46:25.6919555Z       "requiredStages": [
2026-06-22T00:46:25.6919635Z         "impl",
2026-06-22T00:46:25.6919726Z         "unit",
2026-06-22T00:46:25.6919803Z         "int"
2026-06-22T00:46:25.6919883Z       ],
2026-06-22T00:46:25.6919964Z       "stages": {
2026-06-22T00:46:25.6920045Z         "doc": {
2026-06-22T00:46:25.6920137Z           "complete": false,
2026-06-22T00:46:25.6920240Z           "evidence": []
2026-06-22T00:46:25.6920322Z         },
2026-06-22T00:46:25.6920409Z         "impl": {
2026-06-22T00:46:25.6920504Z           "complete": true,
2026-06-22T00:46:25.6920593Z           "evidence": [
2026-06-22T00:46:25.6920680Z             {
2026-06-22T00:46:25.6920800Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T00:46:25.6920884Z               "line": 128
2026-06-22T00:46:25.6921074Z             },
2026-06-22T00:46:25.6921154Z             {
2026-06-22T00:46:25.6921281Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T00:46:25.6921473Z               "line": 413
2026-06-22T00:46:25.6921554Z             },
2026-06-22T00:46:25.6921634Z             {
2026-06-22T00:46:25.6921755Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T00:46:25.6921845Z               "line": 74
2026-06-22T00:46:25.6921915Z             },
2026-06-22T00:46:25.6922002Z             {
2026-06-22T00:46:25.6922116Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T00:46:25.6922197Z               "line": 332
2026-06-22T00:46:25.6922278Z             },
2026-06-22T00:46:25.6922365Z             {
2026-06-22T00:46:25.6922478Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T00:46:25.6922564Z               "line": 621
2026-06-22T00:46:25.6922651Z             },
2026-06-22T00:46:25.6922737Z             {
2026-06-22T00:46:25.6922869Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-22T00:46:25.6922961Z               "line": 31
2026-06-22T00:46:25.6923057Z             },
2026-06-22T00:46:25.6923140Z             {
2026-06-22T00:46:25.6923256Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-22T00:46:25.6923343Z               "line": 50
2026-06-22T00:46:25.6923422Z             },
2026-06-22T00:46:25.6923503Z             {
2026-06-22T00:46:25.6923608Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-22T00:46:25.6923703Z               "line": 69
2026-06-22T00:46:25.6923781Z             },
2026-06-22T00:46:25.6923862Z             {
2026-06-22T00:46:25.6923982Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-22T00:46:25.6924064Z               "line": 113
2026-06-22T00:46:25.6924148Z             },
2026-06-22T00:46:25.6924230Z             {
2026-06-22T00:46:25.6924363Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-22T00:46:25.6924448Z               "line": 25
2026-06-22T00:46:25.6924534Z             },
2026-06-22T00:46:25.6924617Z             {
2026-06-22T00:46:25.6924745Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-22T00:46:25.6924835Z               "line": 34
2026-06-22T00:46:25.6924917Z             },
2026-06-22T00:46:25.6924997Z             {
2026-06-22T00:46:25.6925121Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-22T00:46:25.6925208Z               "line": 17
2026-06-22T00:46:25.6925284Z             },
2026-06-22T00:46:25.6925360Z             {
2026-06-22T00:46:25.6925460Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6925571Z               "line": 4817
2026-06-22T00:46:25.6925674Z             },
2026-06-22T00:46:25.6925765Z             {
2026-06-22T00:46:25.6926532Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T00:46:25.6926794Z               "line": 419
2026-06-22T00:46:25.6926989Z             }
2026-06-22T00:46:25.6927162Z           ]
2026-06-22T00:46:25.6927332Z         },
2026-06-22T00:46:25.6927496Z         "int": {
2026-06-22T00:46:25.6927685Z           "complete": true,
2026-06-22T00:46:25.6927891Z           "evidence": [
2026-06-22T00:46:25.6928111Z             {
2026-06-22T00:46:25.6928358Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T00:46:25.6928610Z               "line": 821
2026-06-22T00:46:25.6928805Z             }
2026-06-22T00:46:25.6929041Z           ]
2026-06-22T00:46:25.6929213Z         },
2026-06-22T00:46:25.6929390Z         "unit": {
2026-06-22T00:46:25.6929575Z           "complete": true,
2026-06-22T00:46:25.6929772Z           "evidence": [
2026-06-22T00:46:25.6929951Z             {
2026-06-22T00:46:25.6930157Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T00:46:25.6930401Z               "line": 341
2026-06-22T00:46:25.6930576Z             },
2026-06-22T00:46:25.6930749Z             {
2026-06-22T00:46:25.6930949Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T00:46:25.6931313Z               "line": 1115
2026-06-22T00:46:25.6931510Z             },
2026-06-22T00:46:25.6931682Z             {
2026-06-22T00:46:25.6931995Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-22T00:46:25.6932247Z               "line": 151
2026-06-22T00:46:25.6932428Z             },
2026-06-22T00:46:25.6932672Z             {
2026-06-22T00:46:25.6932881Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-22T00:46:25.6933119Z               "line": 61
2026-06-22T00:46:25.6933320Z             },
2026-06-22T00:46:25.6933487Z             {
2026-06-22T00:46:25.6933686Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-22T00:46:25.6933926Z               "line": 111
2026-06-22T00:46:25.6934115Z             },
2026-06-22T00:46:25.6934281Z             {
2026-06-22T00:46:25.6934470Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-22T00:46:25.6934723Z               "line": 138
2026-06-22T00:46:25.6934919Z             },
2026-06-22T00:46:25.6935099Z             {
2026-06-22T00:46:25.6935296Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-22T00:46:25.6935544Z               "line": 148
2026-06-22T00:46:25.6935729Z             },
2026-06-22T00:46:25.6935891Z             {
2026-06-22T00:46:25.6936068Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6936292Z               "line": 10021
2026-06-22T00:46:25.6936489Z             }
2026-06-22T00:46:25.6936640Z           ]
2026-06-22T00:46:25.6936808Z         }
2026-06-22T00:46:25.6936973Z       }
2026-06-22T00:46:25.6937135Z     },
2026-06-22T00:46:25.6937297Z     {
2026-06-22T00:46:25.6937464Z       "id": "REQ-SUBNET-6",
2026-06-22T00:46:25.6938236Z       "title": "Trust lifecycle verbs, elevation-gated: spt subnet leave <NAME> (membership exit) and spt subnet prune <node> (removes a dead identity's trust + registry rows, killing its dead dials; trust mutation = security surface, REQ-PAIR-6 gate machinery) (M8 decisions 6-7)",
2026-06-22T00:46:25.6939132Z       "requiredStages": [
2026-06-22T00:46:25.6939347Z         "impl",
2026-06-22T00:46:25.6939520Z         "unit"
2026-06-22T00:46:25.6939688Z       ],
2026-06-22T00:46:25.6939854Z       "stages": {
2026-06-22T00:46:25.6940012Z         "doc": {
2026-06-22T00:46:25.6940187Z           "complete": false,
2026-06-22T00:46:25.6940398Z           "evidence": []
2026-06-22T00:46:25.6940632Z         },
2026-06-22T00:46:25.6940808Z         "impl": {
2026-06-22T00:46:25.6940998Z           "complete": true,
2026-06-22T00:46:25.6941199Z           "evidence": [
2026-06-22T00:46:25.6941380Z             {
2026-06-22T00:46:25.6941624Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.6941896Z               "line": 254
2026-06-22T00:46:25.6942089Z             },
2026-06-22T00:46:25.6942256Z             {
2026-06-22T00:46:25.6942444Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6942674Z               "line": 4475
2026-06-22T00:46:25.6942860Z             },
2026-06-22T00:46:25.6943040Z             {
2026-06-22T00:46:25.6943227Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6943441Z               "line": 4492
2026-06-22T00:46:25.6947633Z             },
2026-06-22T00:46:25.6947852Z             {
2026-06-22T00:46:25.6948053Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6948302Z               "line": 4545
2026-06-22T00:46:25.6948491Z             },
2026-06-22T00:46:25.6948659Z             {
2026-06-22T00:46:25.6948839Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6949159Z               "line": 4568
2026-06-22T00:46:25.6949373Z             }
2026-06-22T00:46:25.6949536Z           ]
2026-06-22T00:46:25.6949702Z         },
2026-06-22T00:46:25.6949863Z         "int": {
2026-06-22T00:46:25.6950042Z           "complete": false,
2026-06-22T00:46:25.6950238Z           "evidence": []
2026-06-22T00:46:25.6950428Z         },
2026-06-22T00:46:25.6950582Z         "unit": {
2026-06-22T00:46:25.6950752Z           "complete": true,
2026-06-22T00:46:25.6951106Z           "evidence": [
2026-06-22T00:46:25.6951292Z             {
2026-06-22T00:46:25.6951469Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6951794Z               "line": 10035
2026-06-22T00:46:25.6951983Z             },
2026-06-22T00:46:25.6952133Z             {
2026-06-22T00:46:25.6952307Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6952531Z               "line": 10068
2026-06-22T00:46:25.6952702Z             },
2026-06-22T00:46:25.6952886Z             {
2026-06-22T00:46:25.6953072Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6953300Z               "line": 10077
2026-06-22T00:46:25.6953487Z             }
2026-06-22T00:46:25.6953643Z           ]
2026-06-22T00:46:25.6953797Z         }
2026-06-22T00:46:25.6953953Z       }
2026-06-22T00:46:25.6954102Z     },
2026-06-22T00:46:25.6954259Z     {
2026-06-22T00:46:25.6954426Z       "id": "REQ-SUBNET-7",
2026-06-22T00:46:25.6956201Z       "title": "Per-machine re-pair trust overwrite: registry rows carry a hashed stable machine identifier (OS machine id /etc/machine-id|MachineGuid, domain-separated SHA-256 before gossip, spt-minted persisted UUID fallback; additive serde-default field — old rows parse clean); a COMPLETED pairing ceremony presenting the same node label AND machine id as an existing trusted row evicts the superseded identity's trust + registry rows on the seed-holder and replicates the eviction; a gossiped claim alone never evicts trust (M8 decisions 13, 22)",
2026-06-22T00:46:25.6957688Z       "requiredStages": [
2026-06-22T00:46:25.6957885Z         "impl",
2026-06-22T00:46:25.6958055Z         "unit"
2026-06-22T00:46:25.6958217Z       ],
2026-06-22T00:46:25.6958374Z       "stages": {
2026-06-22T00:46:25.6958547Z         "doc": {
2026-06-22T00:46:25.6958717Z           "complete": false,
2026-06-22T00:46:25.6958918Z           "evidence": []
2026-06-22T00:46:25.6959171Z         },
2026-06-22T00:46:25.6959337Z         "impl": {
2026-06-22T00:46:25.6959510Z           "complete": true,
2026-06-22T00:46:25.6959733Z           "evidence": [
2026-06-22T00:46:25.6959905Z             {
2026-06-22T00:46:25.6960121Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-22T00:46:25.6960375Z               "line": 17
2026-06-22T00:46:25.6960551Z             },
2026-06-22T00:46:25.6960722Z             {
2026-06-22T00:46:25.6960922Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T00:46:25.6961156Z               "line": 103
2026-06-22T00:46:25.6961336Z             },
2026-06-22T00:46:25.6961499Z             {
2026-06-22T00:46:25.6961695Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T00:46:25.6961932Z               "line": 312
2026-06-22T00:46:25.6962109Z             },
2026-06-22T00:46:25.6962267Z             {
2026-06-22T00:46:25.6962462Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T00:46:25.6962716Z               "line": 131
2026-06-22T00:46:25.6962896Z             },
2026-06-22T00:46:25.6963064Z             {
2026-06-22T00:46:25.6963272Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.6963536Z               "line": 160
2026-06-22T00:46:25.6963718Z             },
2026-06-22T00:46:25.6963884Z             {
2026-06-22T00:46:25.6964094Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.6964338Z               "line": 447
2026-06-22T00:46:25.6964523Z             },
2026-06-22T00:46:25.6964690Z             {
2026-06-22T00:46:25.6964886Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.6965129Z               "line": 670
2026-06-22T00:46:25.6965315Z             },
2026-06-22T00:46:25.6965472Z             {
2026-06-22T00:46:25.6965663Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.6965910Z               "line": 710
2026-06-22T00:46:25.6966088Z             },
2026-06-22T00:46:25.6966252Z             {
2026-06-22T00:46:25.6966451Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.6966829Z               "line": 766
2026-06-22T00:46:25.6967009Z             },
2026-06-22T00:46:25.6967252Z             {
2026-06-22T00:46:25.6967448Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T00:46:25.6967695Z               "line": 136
2026-06-22T00:46:25.6967872Z             },
2026-06-22T00:46:25.6968039Z             {
2026-06-22T00:46:25.6968239Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.6968484Z               "line": 139
2026-06-22T00:46:25.6968648Z             }
2026-06-22T00:46:25.6968807Z           ]
2026-06-22T00:46:25.6969029Z         },
2026-06-22T00:46:25.6969188Z         "int": {
2026-06-22T00:46:25.6969354Z           "complete": false,
2026-06-22T00:46:25.6969550Z           "evidence": []
2026-06-22T00:46:25.6969722Z         },
2026-06-22T00:46:25.6969884Z         "unit": {
2026-06-22T00:46:25.6970061Z           "complete": true,
2026-06-22T00:46:25.6970250Z           "evidence": [
2026-06-22T00:46:25.6970442Z             {
2026-06-22T00:46:25.6970627Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-22T00:46:25.6970879Z               "line": 136
2026-06-22T00:46:25.6971055Z             },
2026-06-22T00:46:25.6971210Z             {
2026-06-22T00:46:25.6971397Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-22T00:46:25.6971644Z               "line": 156
2026-06-22T00:46:25.6971815Z             },
2026-06-22T00:46:25.6971979Z             {
2026-06-22T00:46:25.6972178Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.6972422Z               "line": 987
2026-06-22T00:46:25.6972599Z             },
2026-06-22T00:46:25.6972803Z             {
2026-06-22T00:46:25.6973022Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T00:46:25.6973281Z               "line": 1009
2026-06-22T00:46:25.6973461Z             },
2026-06-22T00:46:25.6973652Z             {
2026-06-22T00:46:25.6973875Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T00:46:25.6974149Z               "line": 1419
2026-06-22T00:46:25.6974344Z             },
2026-06-22T00:46:25.6974517Z             {
2026-06-22T00:46:25.6974716Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T00:46:25.6974956Z               "line": 1036
2026-06-22T00:46:25.6975132Z             }
2026-06-22T00:46:25.6975298Z           ]
2026-06-22T00:46:25.6975461Z         }
2026-06-22T00:46:25.6975622Z       }
2026-06-22T00:46:25.6975776Z     },
2026-06-22T00:46:25.6975932Z     {
2026-06-22T00:46:25.6976105Z       "id": "REQ-SUBNET-8",
2026-06-22T00:46:25.6977288Z       "title": "Status render honesty: zero-subnet text is daemon-aware ('No subnets registered — this node is standalone.' + daemon-running-dependent blurb, never implying messaging works while the daemon is down); hint footer prints on bare spt subnet only (status drops it); a stalled pump is surfaced in subnet status, never rendered implied-healthy (M8 decisions 11-12, 23)",
2026-06-22T00:46:25.6978318Z       "requiredStages": [
2026-06-22T00:46:25.6978518Z         "impl",
2026-06-22T00:46:25.6978696Z         "unit"
2026-06-22T00:46:25.6978866Z       ],
2026-06-22T00:46:25.6979161Z       "stages": {
2026-06-22T00:46:25.6979337Z         "doc": {
2026-06-22T00:46:25.6979546Z           "complete": false,
2026-06-22T00:46:25.6979743Z           "evidence": []
2026-06-22T00:46:25.6979929Z         },
2026-06-22T00:46:25.6980119Z         "impl": {
2026-06-22T00:46:25.6980301Z           "complete": true,
2026-06-22T00:46:25.6980500Z           "evidence": [
2026-06-22T00:46:25.6980678Z             {
2026-06-22T00:46:25.6980859Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6981092Z               "line": 3835
2026-06-22T00:46:25.6981265Z             },
2026-06-22T00:46:25.6981425Z             {
2026-06-22T00:46:25.6981601Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6981822Z               "line": 3864
2026-06-22T00:46:25.6982004Z             },
2026-06-22T00:46:25.6982272Z             {
2026-06-22T00:46:25.6982452Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6982776Z               "line": 3881
2026-06-22T00:46:25.6982968Z             },
2026-06-22T00:46:25.6983120Z             {
2026-06-22T00:46:25.6983306Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6983536Z               "line": 3904
2026-06-22T00:46:25.6983731Z             },
2026-06-22T00:46:25.6983897Z             {
2026-06-22T00:46:25.6984075Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6984297Z               "line": 4318
2026-06-22T00:46:25.6984483Z             }
2026-06-22T00:46:25.6984680Z           ]
2026-06-22T00:46:25.6984848Z         },
2026-06-22T00:46:25.6985048Z         "int": {
2026-06-22T00:46:25.6985252Z           "complete": false,
2026-06-22T00:46:25.6985458Z           "evidence": []
2026-06-22T00:46:25.6985643Z         },
2026-06-22T00:46:25.6985801Z         "unit": {
2026-06-22T00:46:25.6985977Z           "complete": true,
2026-06-22T00:46:25.6986172Z           "evidence": [
2026-06-22T00:46:25.6986360Z             {
2026-06-22T00:46:25.6986554Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6986778Z               "line": 10225
2026-06-22T00:46:25.6986973Z             },
2026-06-22T00:46:25.6987137Z             {
2026-06-22T00:46:25.6987319Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.6987538Z               "line": 10241
2026-06-22T00:46:25.6987724Z             }
2026-06-22T00:46:25.6987890Z           ]
2026-06-22T00:46:25.6988049Z         }
2026-06-22T00:46:25.6988210Z       }
2026-06-22T00:46:25.6988368Z     },
2026-06-22T00:46:25.6988539Z     {
2026-06-22T00:46:25.6988740Z       "id": "REQ-TERM-1",
2026-06-22T00:46:25.6989088Z       "title": "Process-supervisor terminal wrapper hosting broker PTYs",
2026-06-22T00:46:25.6989397Z       "requiredStages": [
2026-06-22T00:46:25.6989590Z         "impl",
2026-06-22T00:46:25.6989759Z         "unit"
2026-06-22T00:46:25.6989927Z       ],
2026-06-22T00:46:25.6990102Z       "stages": {
2026-06-22T00:46:25.6990284Z         "doc": {
2026-06-22T00:46:25.6990455Z           "complete": false,
2026-06-22T00:46:25.6990665Z           "evidence": []
2026-06-22T00:46:25.6990843Z         },
2026-06-22T00:46:25.6991008Z         "impl": {
2026-06-22T00:46:25.6991190Z           "complete": true,
2026-06-22T00:46:25.6991385Z           "evidence": [
2026-06-22T00:46:25.6991567Z             {
2026-06-22T00:46:25.6991753Z               "path": "crates/spt-term/src/pty.rs",
2026-06-22T00:46:25.6991994Z               "line": 59
2026-06-22T00:46:25.6992180Z             },
2026-06-22T00:46:25.6992340Z             {
2026-06-22T00:46:25.6992532Z               "path": "crates/spt-term/src/pty.rs",
2026-06-22T00:46:25.6992760Z               "line": 234
2026-06-22T00:46:25.6992941Z             },
2026-06-22T00:46:25.6993099Z             {
2026-06-22T00:46:25.6993288Z               "path": "crates/spt-term/src/surface.rs",
2026-06-22T00:46:25.6993518Z               "line": 100
2026-06-22T00:46:25.6993705Z             }
2026-06-22T00:46:25.6993862Z           ]
2026-06-22T00:46:25.6994015Z         },
2026-06-22T00:46:25.6994180Z         "int": {
2026-06-22T00:46:25.6994363Z           "complete": false,
2026-06-22T00:46:25.6994557Z           "evidence": []
2026-06-22T00:46:25.6994740Z         },
2026-06-22T00:46:25.6994899Z         "unit": {
2026-06-22T00:46:25.6995080Z           "complete": true,
2026-06-22T00:46:25.6995269Z           "evidence": [
2026-06-22T00:46:25.6995456Z             {
2026-06-22T00:46:25.6995652Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-22T00:46:25.6995898Z               "line": 24
2026-06-22T00:46:25.6996081Z             },
2026-06-22T00:46:25.6996247Z             {
2026-06-22T00:46:25.6996438Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-22T00:46:25.6996690Z               "line": 56
2026-06-22T00:46:25.6996872Z             }
2026-06-22T00:46:25.6997038Z           ]
2026-06-22T00:46:25.6997202Z         }
2026-06-22T00:46:25.6997475Z       }
2026-06-22T00:46:25.6997633Z     },
2026-06-22T00:46:25.6997788Z     {
2026-06-22T00:46:25.6998074Z       "id": "REQ-TERM-2",
2026-06-22T00:46:25.6998360Z       "title": "session-surface abstraction; send-keys + send-line injection",
2026-06-22T00:46:25.6998680Z       "requiredStages": [
2026-06-22T00:46:25.6998872Z         "impl",
2026-06-22T00:46:25.6999104Z         "unit"
2026-06-22T00:46:25.6999271Z       ],
2026-06-22T00:46:25.6999429Z       "stages": {
2026-06-22T00:46:25.6999609Z         "doc": {
2026-06-22T00:46:25.6999787Z           "complete": false,
2026-06-22T00:46:25.6999986Z           "evidence": []
2026-06-22T00:46:25.7000169Z         },
2026-06-22T00:46:25.7000342Z         "impl": {
2026-06-22T00:46:25.7000516Z           "complete": true,
2026-06-22T00:46:25.7000710Z           "evidence": [
2026-06-22T00:46:25.7000887Z             {
2026-06-22T00:46:25.7001079Z               "path": "crates/spt-term/src/surface.rs",
2026-06-22T00:46:25.7001315Z               "line": 117
2026-06-22T00:46:25.7001493Z             },
2026-06-22T00:46:25.7001664Z             {
2026-06-22T00:46:25.7001864Z               "path": "crates/spt-term/src/surface.rs",
2026-06-22T00:46:25.7002103Z               "line": 127
2026-06-22T00:46:25.7002284Z             }
2026-06-22T00:46:25.7002446Z           ]
2026-06-22T00:46:25.7002607Z         },
2026-06-22T00:46:25.7002763Z         "int": {
2026-06-22T00:46:25.7002943Z           "complete": false,
2026-06-22T00:46:25.7003134Z           "evidence": []
2026-06-22T00:46:25.7003311Z         },
2026-06-22T00:46:25.7003482Z         "unit": {
2026-06-22T00:46:25.7003654Z           "complete": true,
2026-06-22T00:46:25.7003849Z           "evidence": [
2026-06-22T00:46:25.7004026Z             {
2026-06-22T00:46:25.7004216Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-22T00:46:25.7004460Z               "line": 46
2026-06-22T00:46:25.7004642Z             },
2026-06-22T00:46:25.7004817Z             {
2026-06-22T00:46:25.7005013Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-22T00:46:25.7005262Z               "line": 77
2026-06-22T00:46:25.7005464Z             }
2026-06-22T00:46:25.7005626Z           ]
2026-06-22T00:46:25.7005791Z         }
2026-06-22T00:46:25.7005940Z       }
2026-06-22T00:46:25.7006091Z     },
2026-06-22T00:46:25.7006250Z     {
2026-06-22T00:46:25.7006410Z       "id": "REQ-TERM-3",
2026-06-22T00:46:25.7006655Z       "title": "Byte-stream remote terminal streaming for v1",
2026-06-22T00:46:25.7006922Z       "requiredStages": [
2026-06-22T00:46:25.7007107Z         "impl",
2026-06-22T00:46:25.7007278Z         "unit"
2026-06-22T00:46:25.7007442Z       ],
2026-06-22T00:46:25.7007603Z       "stages": {
2026-06-22T00:46:25.7007781Z         "doc": {
2026-06-22T00:46:25.7007955Z           "complete": false,
2026-06-22T00:46:25.7008150Z           "evidence": []
2026-06-22T00:46:25.7008343Z         },
2026-06-22T00:46:25.7008492Z         "impl": {
2026-06-22T00:46:25.7008668Z           "complete": true,
2026-06-22T00:46:25.7008869Z           "evidence": [
2026-06-22T00:46:25.7009117Z             {
2026-06-22T00:46:25.7009326Z               "path": "crates/spt-term/src/stream.rs",
2026-06-22T00:46:25.7009569Z               "line": 71
2026-06-22T00:46:25.7009789Z             }
2026-06-22T00:46:25.7009951Z           ]
2026-06-22T00:46:25.7010108Z         },
2026-06-22T00:46:25.7010270Z         "int": {
2026-06-22T00:46:25.7010437Z           "complete": false,
2026-06-22T00:46:25.7010629Z           "evidence": []
2026-06-22T00:46:25.7010817Z         },
2026-06-22T00:46:25.7011028Z         "unit": {
2026-06-22T00:46:25.7011199Z           "complete": true,
2026-06-22T00:46:25.7011390Z           "evidence": [
2026-06-22T00:46:25.7011570Z             {
2026-06-22T00:46:25.7011767Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-22T00:46:25.7012005Z               "line": 37
2026-06-22T00:46:25.7012190Z             },
2026-06-22T00:46:25.7012353Z             {
2026-06-22T00:46:25.7012559Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-22T00:46:25.7012922Z               "line": 67
2026-06-22T00:46:25.7013096Z             }
2026-06-22T00:46:25.7013361Z           ]
2026-06-22T00:46:25.7013527Z         }
2026-06-22T00:46:25.7013684Z       }
2026-06-22T00:46:25.7013842Z     },
2026-06-22T00:46:25.7014018Z     {
2026-06-22T00:46:25.7014186Z       "id": "REQ-TERM-4",
2026-06-22T00:46:25.7014772Z       "title": "Live activity buffer (session digest): projection of normalized session logs, snapshot-pull (spt endpoint digest) + structured-delta-stream contract + api digest-entry push",
2026-06-22T00:46:25.7015353Z       "requiredStages": [
2026-06-22T00:46:25.7015545Z         "impl",
2026-06-22T00:46:25.7019866Z         "unit",
2026-06-22T00:46:25.7020072Z         "int"
2026-06-22T00:46:25.7020249Z       ],
2026-06-22T00:46:25.7020401Z       "stages": {
2026-06-22T00:46:25.7020583Z         "doc": {
2026-06-22T00:46:25.7020759Z           "complete": false,
2026-06-22T00:46:25.7020970Z           "evidence": []
2026-06-22T00:46:25.7021169Z         },
2026-06-22T00:46:25.7021331Z         "impl": {
2026-06-22T00:46:25.7021525Z           "complete": true,
2026-06-22T00:46:25.7021730Z           "evidence": [
2026-06-22T00:46:25.7021913Z             {
2026-06-22T00:46:25.7022116Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T00:46:25.7022364Z               "line": 37
2026-06-22T00:46:25.7022556Z             },
2026-06-22T00:46:25.7022722Z             {
2026-06-22T00:46:25.7022927Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T00:46:25.7023191Z               "line": 25
2026-06-22T00:46:25.7023370Z             },
2026-06-22T00:46:25.7023534Z             {
2026-06-22T00:46:25.7023736Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T00:46:25.7023978Z               "line": 114
2026-06-22T00:46:25.7024154Z             },
2026-06-22T00:46:25.7024321Z             {
2026-06-22T00:46:25.7024512Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T00:46:25.7024761Z               "line": 267
2026-06-22T00:46:25.7024950Z             },
2026-06-22T00:46:25.7025108Z             {
2026-06-22T00:46:25.7025317Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T00:46:25.7025570Z               "line": 289
2026-06-22T00:46:25.7025757Z             },
2026-06-22T00:46:25.7025918Z             {
2026-06-22T00:46:25.7026114Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T00:46:25.7026359Z               "line": 307
2026-06-22T00:46:25.7026547Z             },
2026-06-22T00:46:25.7026713Z             {
2026-06-22T00:46:25.7026911Z               "path": "crates/spt-store/src/history.rs",
2026-06-22T00:46:25.7027164Z               "line": 33
2026-06-22T00:46:25.7027346Z             },
2026-06-22T00:46:25.7027507Z             {
2026-06-22T00:46:25.7027703Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T00:46:25.7027952Z               "line": 52
2026-06-22T00:46:25.7028184Z             },
2026-06-22T00:46:25.7028385Z             {
2026-06-22T00:46:25.7028577Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T00:46:25.7028819Z               "line": 180
2026-06-22T00:46:25.7029094Z             },
2026-06-22T00:46:25.7029261Z             {
2026-06-22T00:46:25.7029449Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T00:46:25.7029693Z               "line": 190
2026-06-22T00:46:25.7029875Z             },
2026-06-22T00:46:25.7030027Z             {
2026-06-22T00:46:25.7030218Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T00:46:25.7030456Z               "line": 250
2026-06-22T00:46:25.7030637Z             },
2026-06-22T00:46:25.7030799Z             {
2026-06-22T00:46:25.7030985Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.7031224Z               "line": 284
2026-06-22T00:46:25.7031395Z             },
2026-06-22T00:46:25.7031562Z             {
2026-06-22T00:46:25.7031759Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.7032148Z               "line": 295
2026-06-22T00:46:25.7032314Z             },
2026-06-22T00:46:25.7032573Z             {
2026-06-22T00:46:25.7032759Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.7032977Z               "line": 1193
2026-06-22T00:46:25.7033159Z             }
2026-06-22T00:46:25.7033325Z           ]
2026-06-22T00:46:25.7033483Z         },
2026-06-22T00:46:25.7033649Z         "int": {
2026-06-22T00:46:25.7033821Z           "complete": true,
2026-06-22T00:46:25.7034008Z           "evidence": [
2026-06-22T00:46:25.7034183Z             {
2026-06-22T00:46:25.7034378Z               "path": "crates/spt-daemon/tests/digest.rs",
2026-06-22T00:46:25.7034623Z               "line": 18
2026-06-22T00:46:25.7034805Z             }
2026-06-22T00:46:25.7034962Z           ]
2026-06-22T00:46:25.7035120Z         },
2026-06-22T00:46:25.7035287Z         "unit": {
2026-06-22T00:46:25.7035454Z           "complete": true,
2026-06-22T00:46:25.7035645Z           "evidence": [
2026-06-22T00:46:25.7035825Z             {
2026-06-22T00:46:25.7036012Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T00:46:25.7036265Z               "line": 364
2026-06-22T00:46:25.7036459Z             },
2026-06-22T00:46:25.7036614Z             {
2026-06-22T00:46:25.7036808Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T00:46:25.7037045Z               "line": 416
2026-06-22T00:46:25.7037226Z             },
2026-06-22T00:46:25.7037381Z             {
2026-06-22T00:46:25.7037572Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T00:46:25.7037800Z               "line": 426
2026-06-22T00:46:25.7037983Z             },
2026-06-22T00:46:25.7038139Z             {
2026-06-22T00:46:25.7038330Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T00:46:25.7038569Z               "line": 436
2026-06-22T00:46:25.7038749Z             },
2026-06-22T00:46:25.7038898Z             {
2026-06-22T00:46:25.7039156Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T00:46:25.7039264Z               "line": 456
2026-06-22T00:46:25.7039360Z             },
2026-06-22T00:46:25.7039447Z             {
2026-06-22T00:46:25.7039575Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T00:46:25.7039659Z               "line": 478
2026-06-22T00:46:25.7039740Z             },
2026-06-22T00:46:25.7039826Z             {
2026-06-22T00:46:25.7039929Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T00:46:25.7040014Z               "line": 491
2026-06-22T00:46:25.7040100Z             },
2026-06-22T00:46:25.7040182Z             {
2026-06-22T00:46:25.7040296Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T00:46:25.7040386Z               "line": 502
2026-06-22T00:46:25.7040468Z             },
2026-06-22T00:46:25.7040549Z             {
2026-06-22T00:46:25.7040653Z               "path": "crates/spt-store/src/history.rs",
2026-06-22T00:46:25.7040735Z               "line": 108
2026-06-22T00:46:25.7040821Z             },
2026-06-22T00:46:25.7040906Z             {
2026-06-22T00:46:25.7041021Z               "path": "crates/spt-term/src/digest.rs",
2026-06-22T00:46:25.7041102Z               "line": 119
2026-06-22T00:46:25.7041183Z             },
2026-06-22T00:46:25.7041264Z             {
2026-06-22T00:46:25.7041379Z               "path": "crates/spt-term/src/digest.rs",
2026-06-22T00:46:25.7041460Z               "line": 127
2026-06-22T00:46:25.7041541Z             },
2026-06-22T00:46:25.7041621Z             {
2026-06-22T00:46:25.7041741Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T00:46:25.7041827Z               "line": 474
2026-06-22T00:46:25.7041903Z             },
2026-06-22T00:46:25.7041989Z             {
2026-06-22T00:46:25.7042108Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T00:46:25.7042198Z               "line": 501
2026-06-22T00:46:25.7042280Z             },
2026-06-22T00:46:25.7042353Z             {
2026-06-22T00:46:25.7042470Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T00:46:25.7042665Z               "line": 520
2026-06-22T00:46:25.7042837Z             },
2026-06-22T00:46:25.7042907Z             {
2026-06-22T00:46:25.7043018Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T00:46:25.7043099Z               "line": 535
2026-06-22T00:46:25.7043189Z             },
2026-06-22T00:46:25.7043270Z             {
2026-06-22T00:46:25.7043381Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T00:46:25.7043471Z               "line": 561
2026-06-22T00:46:25.7043556Z             },
2026-06-22T00:46:25.7043638Z             {
2026-06-22T00:46:25.7043751Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T00:46:25.7043828Z               "line": 581
2026-06-22T00:46:25.7043914Z             },
2026-06-22T00:46:25.7044001Z             {
2026-06-22T00:46:25.7044115Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T00:46:25.7044195Z               "line": 591
2026-06-22T00:46:25.7044277Z             },
2026-06-22T00:46:25.7044363Z             {
2026-06-22T00:46:25.7044472Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T00:46:25.7044563Z               "line": 683
2026-06-22T00:46:25.7044645Z             },
2026-06-22T00:46:25.7044724Z             {
2026-06-22T00:46:25.7044847Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.7044919Z               "line": 885
2026-06-22T00:46:25.7045000Z             },
2026-06-22T00:46:25.7045079Z             {
2026-06-22T00:46:25.7045188Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.7045275Z               "line": 9792
2026-06-22T00:46:25.7045356Z             }
2026-06-22T00:46:25.7045436Z           ]
2026-06-22T00:46:25.7045522Z         }
2026-06-22T00:46:25.7045599Z       }
2026-06-22T00:46:25.7045676Z     },
2026-06-22T00:46:25.7045760Z     {
2026-06-22T00:46:25.7045857Z       "id": "REQ-TERM-5",
2026-06-22T00:46:25.7047295Z       "title": "Adapter-declared digest extractor seam: a `[digest]` manifest section declaring an imperative extractor (native harness log -> the {role,text,tool,ts} contract; defaults to the [history] source files with an own-source escape hatch), `api digest-entry` push fallback, register-time validation of the section, adapter-declared presentation defaults (window depth, arg-truncation, sprint-collapse) that any consumer may override, and a `spt adapter digest-proof` author tool plus runtime skip-diagnostics (no silent drop). Reverses M9's no-manifest-seam stance; no declarative DSL.",
2026-06-22T00:46:25.7047406Z       "requiredStages": [
2026-06-22T00:46:25.7047493Z         "doc",
2026-06-22T00:46:25.7047577Z         "impl",
2026-06-22T00:46:25.7047658Z         "unit",
2026-06-22T00:46:25.7047733Z         "int"
2026-06-22T00:46:25.7047815Z       ],
2026-06-22T00:46:25.7047899Z       "stages": {
2026-06-22T00:46:25.7047984Z         "doc": {
2026-06-22T00:46:25.7048080Z           "complete": true,
2026-06-22T00:46:25.7048161Z           "evidence": [
2026-06-22T00:46:25.7048247Z             {
2026-06-22T00:46:25.7048351Z               "path": "docs/MANIFEST.md",
2026-06-22T00:46:25.7048448Z               "line": 234
2026-06-22T00:46:25.7048528Z             }
2026-06-22T00:46:25.7048613Z           ]
2026-06-22T00:46:25.7048699Z         },
2026-06-22T00:46:25.7048781Z         "impl": {
2026-06-22T00:46:25.7048876Z           "complete": true,
2026-06-22T00:46:25.7049038Z           "evidence": [
2026-06-22T00:46:25.7049115Z             {
2026-06-22T00:46:25.7049233Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T00:46:25.7049343Z               "line": 75
2026-06-22T00:46:25.7049421Z             },
2026-06-22T00:46:25.7049505Z             {
2026-06-22T00:46:25.7049624Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T00:46:25.7049711Z               "line": 131
2026-06-22T00:46:25.7049792Z             },
2026-06-22T00:46:25.7049872Z             {
2026-06-22T00:46:25.7049993Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T00:46:25.7050196Z               "line": 22
2026-06-22T00:46:25.7050281Z             },
2026-06-22T00:46:25.7050438Z             {
2026-06-22T00:46:25.7050551Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T00:46:25.7050641Z               "line": 87
2026-06-22T00:46:25.7050718Z             },
2026-06-22T00:46:25.7050790Z             {
2026-06-22T00:46:25.7050903Z               "path": "crates/spt-term/src/digest.rs",
2026-06-22T00:46:25.7050985Z               "line": 30
2026-06-22T00:46:25.7051071Z             },
2026-06-22T00:46:25.7051147Z             {
2026-06-22T00:46:25.7051271Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T00:46:25.7051362Z               "line": 103
2026-06-22T00:46:25.7051443Z             },
2026-06-22T00:46:25.7051519Z             {
2026-06-22T00:46:25.7051625Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T00:46:25.7051705Z               "line": 167
2026-06-22T00:46:25.7051791Z             },
2026-06-22T00:46:25.7051881Z             {
2026-06-22T00:46:25.7051987Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T00:46:25.7052086Z               "line": 434
2026-06-22T00:46:25.7052163Z             },
2026-06-22T00:46:25.7052244Z             {
2026-06-22T00:46:25.7052349Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.7052434Z               "line": 5650
2026-06-22T00:46:25.7052515Z             },
2026-06-22T00:46:25.7052603Z             {
2026-06-22T00:46:25.7052710Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.7052792Z               "line": 5957
2026-06-22T00:46:25.7052869Z             }
2026-06-22T00:46:25.7052955Z           ]
2026-06-22T00:46:25.7053035Z         },
2026-06-22T00:46:25.7053120Z         "int": {
2026-06-22T00:46:25.7053201Z           "complete": true,
2026-06-22T00:46:25.7053288Z           "evidence": [
2026-06-22T00:46:25.7053368Z             {
2026-06-22T00:46:25.7053515Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-22T00:46:25.7053602Z               "line": 17
2026-06-22T00:46:25.7053683Z             }
2026-06-22T00:46:25.7053768Z           ]
2026-06-22T00:46:25.7053850Z         },
2026-06-22T00:46:25.7053927Z         "unit": {
2026-06-22T00:46:25.7054012Z           "complete": true,
2026-06-22T00:46:25.7054097Z           "evidence": [
2026-06-22T00:46:25.7054179Z             {
2026-06-22T00:46:25.7054289Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T00:46:25.7054374Z               "line": 375
2026-06-22T00:46:25.7054455Z             },
2026-06-22T00:46:25.7054542Z             {
2026-06-22T00:46:25.7054645Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T00:46:25.7054726Z               "line": 162
2026-06-22T00:46:25.7054814Z             },
2026-06-22T00:46:25.7054890Z             {
2026-06-22T00:46:25.7055003Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T00:46:25.7055090Z               "line": 179
2026-06-22T00:46:25.7055181Z             },
2026-06-22T00:46:25.7055261Z             {
2026-06-22T00:46:25.7055365Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T00:46:25.7055460Z               "line": 201
2026-06-22T00:46:25.7055546Z             },
2026-06-22T00:46:25.7055625Z             {
2026-06-22T00:46:25.7055734Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T00:46:25.7055820Z               "line": 212
2026-06-22T00:46:25.7055907Z             },
2026-06-22T00:46:25.7055991Z             {
2026-06-22T00:46:25.7056102Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T00:46:25.7056192Z               "line": 223
2026-06-22T00:46:25.7056278Z             },
2026-06-22T00:46:25.7056363Z             {
2026-06-22T00:46:25.7056484Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.7056579Z               "line": 1525
2026-06-22T00:46:25.7056659Z             },
2026-06-22T00:46:25.7056737Z             {
2026-06-22T00:46:25.7056855Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.7057031Z               "line": 1568
2026-06-22T00:46:25.7057113Z             },
2026-06-22T00:46:25.7057260Z             {
2026-06-22T00:46:25.7057385Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T00:46:25.7057471Z               "line": 606
2026-06-22T00:46:25.7057551Z             },
2026-06-22T00:46:25.7057632Z             {
2026-06-22T00:46:25.7057752Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T00:46:25.7057846Z               "line": 634
2026-06-22T00:46:25.7057928Z             },
2026-06-22T00:46:25.7058015Z             {
2026-06-22T00:46:25.7058128Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T00:46:25.7058218Z               "line": 646
2026-06-22T00:46:25.7058298Z             },
2026-06-22T00:46:25.7058380Z             {
2026-06-22T00:46:25.7058501Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T00:46:25.7058577Z               "line": 669
2026-06-22T00:46:25.7058659Z             },
2026-06-22T00:46:25.7058740Z             {
2026-06-22T00:46:25.7058849Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.7059017Z               "line": 8503
2026-06-22T00:46:25.7059113Z             },
2026-06-22T00:46:25.7059187Z             {
2026-06-22T00:46:25.7059289Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.7059374Z               "line": 8561
2026-06-22T00:46:25.7059488Z             }
2026-06-22T00:46:25.7059569Z           ]
2026-06-22T00:46:25.7059642Z         }
2026-06-22T00:46:25.7059722Z       }
2026-06-22T00:46:25.7059812Z     },
2026-06-22T00:46:25.7059879Z     {
2026-06-22T00:46:25.7059976Z       "id": "REQ-TERM-6",
2026-06-22T00:46:25.7061040Z       "title": "Thread-spanning digest across session boundaries: a per-endpoint session ledger (`<perch>/sessions.log`) appended at first bind and by `api boundary` on `/clear`|`/compact` session rotation, the digest enumerating the last K sessions so its rolling window bridges a boundary, and a distinctive in-timeline boundary marker (DigestEntry::Boundary). The digest follows the live-agent thread, not a single session.",
2026-06-22T00:46:25.7061153Z       "requiredStages": [
2026-06-22T00:46:25.7061240Z         "impl",
2026-06-22T00:46:25.7061322Z         "unit",
2026-06-22T00:46:25.7061402Z         "int"
2026-06-22T00:46:25.7061487Z       ],
2026-06-22T00:46:25.7061565Z       "stages": {
2026-06-22T00:46:25.7061655Z         "doc": {
2026-06-22T00:46:25.7061735Z           "complete": false,
2026-06-22T00:46:25.7061826Z           "evidence": []
2026-06-22T00:46:25.7061903Z         },
2026-06-22T00:46:25.7061994Z         "impl": {
2026-06-22T00:46:25.7062069Z           "complete": true,
2026-06-22T00:46:25.7062160Z           "evidence": [
2026-06-22T00:46:25.7062246Z             {
2026-06-22T00:46:25.7062365Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T00:46:25.7062460Z               "line": 132
2026-06-22T00:46:25.7062538Z             },
2026-06-22T00:46:25.7062632Z             {
2026-06-22T00:46:25.7062742Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T00:46:25.7062829Z               "line": 187
2026-06-22T00:46:25.7062909Z             },
2026-06-22T00:46:25.7062980Z             {
2026-06-22T00:46:25.7063095Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T00:46:25.7063172Z               "line": 17
2026-06-22T00:46:25.7063261Z             },
2026-06-22T00:46:25.7063347Z             {
2026-06-22T00:46:25.7063463Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T00:46:25.7063553Z               "line": 104
2026-06-22T00:46:25.7063637Z             },
2026-06-22T00:46:25.7063713Z             {
2026-06-22T00:46:25.7063828Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T00:46:25.7063910Z               "line": 319
2026-06-22T00:46:25.7063990Z             },
2026-06-22T00:46:25.7064071Z             {
2026-06-22T00:46:25.7064191Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T00:46:25.7064391Z               "line": 396
2026-06-22T00:46:25.7064467Z             }
2026-06-22T00:46:25.7064548Z           ]
2026-06-22T00:46:25.7064715Z         },
2026-06-22T00:46:25.7064796Z         "int": {
2026-06-22T00:46:25.7064877Z           "complete": true,
2026-06-22T00:46:25.7064967Z           "evidence": [
2026-06-22T00:46:25.7065044Z             {
2026-06-22T00:46:25.7065197Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-22T00:46:25.7065282Z               "line": 18
2026-06-22T00:46:25.7065364Z             }
2026-06-22T00:46:25.7065445Z           ]
2026-06-22T00:46:25.7065525Z         },
2026-06-22T00:46:25.7065606Z         "unit": {
2026-06-22T00:46:25.7065688Z           "complete": true,
2026-06-22T00:46:25.7065774Z           "evidence": [
2026-06-22T00:46:25.7065859Z             {
2026-06-22T00:46:25.7065977Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T00:46:25.7066072Z               "line": 135
2026-06-22T00:46:25.7066157Z             },
2026-06-22T00:46:25.7066247Z             {
2026-06-22T00:46:25.7066357Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T00:46:25.7066458Z               "line": 150
2026-06-22T00:46:25.7066533Z             },
2026-06-22T00:46:25.7066614Z             {
2026-06-22T00:46:25.7066734Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T00:46:25.7066819Z               "line": 166
2026-06-22T00:46:25.7066899Z             },
2026-06-22T00:46:25.7066977Z             {
2026-06-22T00:46:25.7067096Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T00:46:25.7067177Z               "line": 257
2026-06-22T00:46:25.7067258Z             },
2026-06-22T00:46:25.7067339Z             {
2026-06-22T00:46:25.7067458Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T00:46:25.7067553Z               "line": 738
2026-06-22T00:46:25.7067635Z             },
2026-06-22T00:46:25.7067725Z             {
2026-06-22T00:46:25.7067834Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T00:46:25.7067926Z               "line": 759
2026-06-22T00:46:25.7068012Z             },
2026-06-22T00:46:25.7068101Z             {
2026-06-22T00:46:25.7068221Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T00:46:25.7068312Z               "line": 726
2026-06-22T00:46:25.7068397Z             }
2026-06-22T00:46:25.7068478Z           ]
2026-06-22T00:46:25.7068565Z         }
2026-06-22T00:46:25.7068647Z       }
2026-06-22T00:46:25.7068726Z     },
2026-06-22T00:46:25.7068811Z     {
2026-06-22T00:46:25.7068892Z       "id": "REQ-TERM-7",
2026-06-22T00:46:25.7070139Z       "title": "Two-origin digest merge: spt-owned context-injection entries (psyche_download | echo_mirror | owl_message) appended by spt to the endpoint `digest.log`, timestamp-interleaved with the adapter's extracted activity records into one ordered timeline, via a distinct context-injection record category. Data model only this milestone; GUI collapse/expand and the echo-reads-digest delta loop are deferred to the surfaces that consume them.",
2026-06-22T00:46:25.7070235Z       "requiredStages": [
2026-06-22T00:46:25.7070310Z         "impl",
2026-06-22T00:46:25.7070396Z         "unit",
2026-06-22T00:46:25.7070478Z         "int"
2026-06-22T00:46:25.7070564Z       ],
2026-06-22T00:46:25.7070639Z       "stages": {
2026-06-22T00:46:25.7070725Z         "doc": {
2026-06-22T00:46:25.7070822Z           "complete": false,
2026-06-22T00:46:25.7070903Z           "evidence": []
2026-06-22T00:46:25.7070982Z         },
2026-06-22T00:46:25.7071064Z         "impl": {
2026-06-22T00:46:25.7071156Z           "complete": true,
2026-06-22T00:46:25.7071250Z           "evidence": [
2026-06-22T00:46:25.7071335Z             {
2026-06-22T00:46:25.7071459Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T00:46:25.7071540Z               "line": 133
2026-06-22T00:46:25.7071623Z             },
2026-06-22T00:46:25.7071709Z             {
2026-06-22T00:46:25.7071814Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T00:46:25.7072009Z               "line": 326
2026-06-22T00:46:25.7072096Z             },
2026-06-22T00:46:25.7072262Z             {
2026-06-22T00:46:25.7072367Z               "path": "crates/spt-live/src/inject.rs",
2026-06-22T00:46:25.7072459Z               "line": 15
2026-06-22T00:46:25.7072534Z             },
2026-06-22T00:46:25.7072615Z             {
2026-06-22T00:46:25.7072725Z               "path": "crates/spt-live/src/inject.rs",
2026-06-22T00:46:25.7072811Z               "line": 32
2026-06-22T00:46:25.7072897Z             },
2026-06-22T00:46:25.7072978Z             {
2026-06-22T00:46:25.7073098Z               "path": "crates/spt-store/src/history.rs",
2026-06-22T00:46:25.7073182Z               "line": 49
2026-06-22T00:46:25.7073268Z             },
2026-06-22T00:46:25.7073350Z             {
2026-06-22T00:46:25.7073464Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T00:46:25.7073555Z               "line": 286
2026-06-22T00:46:25.7073636Z             },
2026-06-22T00:46:25.7073728Z             {
2026-06-22T00:46:25.7073845Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T00:46:25.7073936Z               "line": 320
2026-06-22T00:46:25.7074023Z             }
2026-06-22T00:46:25.7074094Z           ]
2026-06-22T00:46:25.7074178Z         },
2026-06-22T00:46:25.7074259Z         "int": {
2026-06-22T00:46:25.7074340Z           "complete": true,
2026-06-22T00:46:25.7074422Z           "evidence": [
2026-06-22T00:46:25.7074507Z             {
2026-06-22T00:46:25.7074655Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-22T00:46:25.7074742Z               "line": 19
2026-06-22T00:46:25.7074822Z             }
2026-06-22T00:46:25.7074902Z           ]
2026-06-22T00:46:25.7074990Z         },
2026-06-22T00:46:25.7075075Z         "unit": {
2026-06-22T00:46:25.7075170Z           "complete": true,
2026-06-22T00:46:25.7075261Z           "evidence": [
2026-06-22T00:46:25.7075333Z             {
2026-06-22T00:46:25.7075461Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T00:46:25.7075542Z               "line": 455
2026-06-22T00:46:25.7075634Z             },
2026-06-22T00:46:25.7075709Z             {
2026-06-22T00:46:25.7075833Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T00:46:25.7075924Z               "line": 568
2026-06-22T00:46:25.7076005Z             },
2026-06-22T00:46:25.7076085Z             {
2026-06-22T00:46:25.7076185Z               "path": "crates/spt-live/src/inject.rs",
2026-06-22T00:46:25.7076283Z               "line": 58
2026-06-22T00:46:25.7076367Z             },
2026-06-22T00:46:25.7076456Z             {
2026-06-22T00:46:25.7076575Z               "path": "crates/spt-live/src/inject.rs",
2026-06-22T00:46:25.7076661Z               "line": 77
2026-06-22T00:46:25.7076745Z             },
2026-06-22T00:46:25.7076825Z             {
2026-06-22T00:46:25.7076940Z               "path": "crates/spt-live/src/inject.rs",
2026-06-22T00:46:25.7077018Z               "line": 87
2026-06-22T00:46:25.7077116Z             },
2026-06-22T00:46:25.7077202Z             {
2026-06-22T00:46:25.7077313Z               "path": "crates/spt-store/src/history.rs",
2026-06-22T00:46:25.7077403Z               "line": 94
2026-06-22T00:46:25.7077483Z             },
2026-06-22T00:46:25.7077566Z             {
2026-06-22T00:46:25.7077680Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T00:46:25.7077765Z               "line": 691
2026-06-22T00:46:25.7077857Z             },
2026-06-22T00:46:25.7077937Z             {
2026-06-22T00:46:25.7078056Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T00:46:25.7078142Z               "line": 716
2026-06-22T00:46:25.7078224Z             }
2026-06-22T00:46:25.7078304Z           ]
2026-06-22T00:46:25.7078390Z         }
2026-06-22T00:46:25.7078476Z       }
2026-06-22T00:46:25.7078558Z     },
2026-06-22T00:46:25.7078633Z     {
2026-06-22T00:46:25.7078714Z       "id": "REQ-UPD-1",
2026-06-22T00:46:25.7078839Z       "title": "Peer-propagated update over P2P",
2026-06-22T00:46:25.7079087Z       "requiredStages": [
2026-06-22T00:46:25.7079173Z         "impl",
2026-06-22T00:46:25.7079352Z         "unit",
2026-06-22T00:46:25.7079428Z         "int"
2026-06-22T00:46:25.7079514Z       ],
2026-06-22T00:46:25.7079598Z       "stages": {
2026-06-22T00:46:25.7079678Z         "doc": {
2026-06-22T00:46:25.7079765Z           "complete": false,
2026-06-22T00:46:25.7079856Z           "evidence": []
2026-06-22T00:46:25.7079937Z         },
2026-06-22T00:46:25.7080017Z         "impl": {
2026-06-22T00:46:25.7080109Z           "complete": true,
2026-06-22T00:46:25.7080194Z           "evidence": [
2026-06-22T00:46:25.7080280Z             {
2026-06-22T00:46:25.7080399Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T00:46:25.7080486Z               "line": 28
2026-06-22T00:46:25.7080571Z             },
2026-06-22T00:46:25.7080651Z             {
2026-06-22T00:46:25.7080767Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T00:46:25.7080861Z               "line": 103
2026-06-22T00:46:25.7080938Z             },
2026-06-22T00:46:25.7081019Z             {
2026-06-22T00:46:25.7081153Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T00:46:25.7081238Z               "line": 342
2026-06-22T00:46:25.7081324Z             },
2026-06-22T00:46:25.7081406Z             {
2026-06-22T00:46:25.7081514Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T00:46:25.7081605Z               "line": 22
2026-06-22T00:46:25.7081683Z             },
2026-06-22T00:46:25.7081759Z             {
2026-06-22T00:46:25.7081871Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T00:46:25.7081957Z               "line": 207
2026-06-22T00:46:25.7082038Z             },
2026-06-22T00:46:25.7082119Z             {
2026-06-22T00:46:25.7082240Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T00:46:25.7082317Z               "line": 283
2026-06-22T00:46:25.7082404Z             },
2026-06-22T00:46:25.7082494Z             {
2026-06-22T00:46:25.7082607Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T00:46:25.7082695Z               "line": 340
2026-06-22T00:46:25.7082765Z             },
2026-06-22T00:46:25.7082855Z             {
2026-06-22T00:46:25.7082976Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T00:46:25.7083057Z               "line": 37
2026-06-22T00:46:25.7083142Z             }
2026-06-22T00:46:25.7083227Z           ]
2026-06-22T00:46:25.7083314Z         },
2026-06-22T00:46:25.7083395Z         "int": {
2026-06-22T00:46:25.7083485Z           "complete": true,
2026-06-22T00:46:25.7083580Z           "evidence": [
2026-06-22T00:46:25.7083663Z             {
2026-06-22T00:46:25.7083791Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T00:46:25.7083876Z               "line": 207
2026-06-22T00:46:25.7083954Z             },
2026-06-22T00:46:25.7084034Z             {
2026-06-22T00:46:25.7084148Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T00:46:25.7084245Z               "line": 1082
2026-06-22T00:46:25.7084316Z             }
2026-06-22T00:46:25.7084410Z           ]
2026-06-22T00:46:25.7084491Z         },
2026-06-22T00:46:25.7084574Z         "unit": {
2026-06-22T00:46:25.7084655Z           "complete": true,
2026-06-22T00:46:25.7084748Z           "evidence": [
2026-06-22T00:46:25.7087864Z             {
2026-06-22T00:46:25.7088015Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T00:46:25.7088112Z               "line": 490
2026-06-22T00:46:25.7088192Z             },
2026-06-22T00:46:25.7088277Z             {
2026-06-22T00:46:25.7088397Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T00:46:25.7088488Z               "line": 616
2026-06-22T00:46:25.7088574Z             },
2026-06-22T00:46:25.7088650Z             {
2026-06-22T00:46:25.7088779Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-22T00:46:25.7088864Z               "line": 277
2026-06-22T00:46:25.7089165Z             },
2026-06-22T00:46:25.7089251Z             {
2026-06-22T00:46:25.7089371Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T00:46:25.7089555Z               "line": 124
2026-06-22T00:46:25.7089637Z             },
2026-06-22T00:46:25.7089724Z             {
2026-06-22T00:46:25.7089832Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T00:46:25.7089922Z               "line": 200
2026-06-22T00:46:25.7089993Z             }
2026-06-22T00:46:25.7090079Z           ]
2026-06-22T00:46:25.7090158Z         }
2026-06-22T00:46:25.7090234Z       }
2026-06-22T00:46:25.7090305Z     },
2026-06-22T00:46:25.7090382Z     {
2026-06-22T00:46:25.7090473Z       "id": "REQ-UPD-2",
2026-06-22T00:46:25.7090620Z       "title": "All binaries signature-verified before handoff",
2026-06-22T00:46:25.7090712Z       "requiredStages": [
2026-06-22T00:46:25.7090798Z         "impl",
2026-06-22T00:46:25.7090877Z         "unit"
2026-06-22T00:46:25.7090969Z       ],
2026-06-22T00:46:25.7091117Z       "stages": {
2026-06-22T00:46:25.7091206Z         "doc": {
2026-06-22T00:46:25.7091283Z           "complete": false,
2026-06-22T00:46:25.7091384Z           "evidence": []
2026-06-22T00:46:25.7091465Z         },
2026-06-22T00:46:25.7091545Z         "impl": {
2026-06-22T00:46:25.7091642Z           "complete": true,
2026-06-22T00:46:25.7091732Z           "evidence": [
2026-06-22T00:46:25.7091813Z             {
2026-06-22T00:46:25.7091933Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T00:46:25.7092023Z               "line": 343
2026-06-22T00:46:25.7092107Z             },
2026-06-22T00:46:25.7092189Z             {
2026-06-22T00:46:25.7092300Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T00:46:25.7092385Z               "line": 476
2026-06-22T00:46:25.7092469Z             },
2026-06-22T00:46:25.7092550Z             {
2026-06-22T00:46:25.7092655Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T00:46:25.7092739Z               "line": 29
2026-06-22T00:46:25.7092829Z             },
2026-06-22T00:46:25.7092906Z             {
2026-06-22T00:46:25.7093022Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T00:46:25.7093101Z               "line": 271
2026-06-22T00:46:25.7093182Z             },
2026-06-22T00:46:25.7093264Z             {
2026-06-22T00:46:25.7093369Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T00:46:25.7093458Z               "line": 288
2026-06-22T00:46:25.7093541Z             },
2026-06-22T00:46:25.7093626Z             {
2026-06-22T00:46:25.7093731Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T00:46:25.7093812Z               "line": 408
2026-06-22T00:46:25.7093898Z             },
2026-06-22T00:46:25.7093974Z             {
2026-06-22T00:46:25.7094083Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T00:46:25.7094170Z               "line": 558
2026-06-22T00:46:25.7094242Z             },
2026-06-22T00:46:25.7094332Z             {
2026-06-22T00:46:25.7094446Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T00:46:25.7094538Z               "line": 155
2026-06-22T00:46:25.7094627Z             }
2026-06-22T00:46:25.7094703Z           ]
2026-06-22T00:46:25.7094790Z         },
2026-06-22T00:46:25.7094872Z         "int": {
2026-06-22T00:46:25.7094965Z           "complete": false,
2026-06-22T00:46:25.7095042Z           "evidence": []
2026-06-22T00:46:25.7095134Z         },
2026-06-22T00:46:25.7095220Z         "unit": {
2026-06-22T00:46:25.7095303Z           "complete": true,
2026-06-22T00:46:25.7095384Z           "evidence": [
2026-06-22T00:46:25.7095470Z             {
2026-06-22T00:46:25.7095581Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T00:46:25.7095665Z               "line": 750
2026-06-22T00:46:25.7095741Z             },
2026-06-22T00:46:25.7095824Z             {
2026-06-22T00:46:25.7095938Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T00:46:25.7096028Z               "line": 811
2026-06-22T00:46:25.7096195Z             },
2026-06-22T00:46:25.7096280Z             {
2026-06-22T00:46:25.7096395Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T00:46:25.7096538Z               "line": 825
2026-06-22T00:46:25.7096623Z             },
2026-06-22T00:46:25.7096700Z             {
2026-06-22T00:46:25.7096820Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T00:46:25.7096906Z               "line": 841
2026-06-22T00:46:25.7096991Z             },
2026-06-22T00:46:25.7097069Z             {
2026-06-22T00:46:25.7097177Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T00:46:25.7097258Z               "line": 932
2026-06-22T00:46:25.7097344Z             },
2026-06-22T00:46:25.7097427Z             {
2026-06-22T00:46:25.7097534Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T00:46:25.7097619Z               "line": 414
2026-06-22T00:46:25.7097700Z             },
2026-06-22T00:46:25.7097776Z             {
2026-06-22T00:46:25.7097884Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T00:46:25.7097979Z               "line": 427
2026-06-22T00:46:25.7098061Z             },
2026-06-22T00:46:25.7098138Z             {
2026-06-22T00:46:25.7098260Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-22T00:46:25.7098342Z               "line": 410
2026-06-22T00:46:25.7098424Z             }
2026-06-22T00:46:25.7098509Z           ]
2026-06-22T00:46:25.7098589Z         }
2026-06-22T00:46:25.7098672Z       }
2026-06-22T00:46:25.7098752Z     },
2026-06-22T00:46:25.7098837Z     {
2026-06-22T00:46:25.7098933Z       "id": "REQ-UPD-3",
2026-06-22T00:46:25.7099186Z       "title": "No endpoint process terminates/suspends during self-update",
2026-06-22T00:46:25.7099286Z       "requiredStages": [
2026-06-22T00:46:25.7099386Z         "impl",
2026-06-22T00:46:25.7099491Z         "unit",
2026-06-22T00:46:25.7099572Z         "int"
2026-06-22T00:46:25.7099650Z       ],
2026-06-22T00:46:25.7099739Z       "stages": {
2026-06-22T00:46:25.7099830Z         "doc": {
2026-06-22T00:46:25.7099926Z           "complete": false,
2026-06-22T00:46:25.7100016Z           "evidence": []
2026-06-22T00:46:25.7100096Z         },
2026-06-22T00:46:25.7100183Z         "impl": {
2026-06-22T00:46:25.7100270Z           "complete": true,
2026-06-22T00:46:25.7100355Z           "evidence": [
2026-06-22T00:46:25.7100439Z             {
2026-06-22T00:46:25.7100558Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T00:46:25.7100644Z               "line": 40
2026-06-22T00:46:25.7100728Z             },
2026-06-22T00:46:25.7100813Z             {
2026-06-22T00:46:25.7100933Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T00:46:25.7101019Z               "line": 87
2026-06-22T00:46:25.7101095Z             },
2026-06-22T00:46:25.7101180Z             {
2026-06-22T00:46:25.7101291Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T00:46:25.7101381Z               "line": 1136
2026-06-22T00:46:25.7101466Z             },
2026-06-22T00:46:25.7101563Z             {
2026-06-22T00:46:25.7101662Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.7101757Z               "line": 2117
2026-06-22T00:46:25.7101843Z             },
2026-06-22T00:46:25.7101920Z             {
2026-06-22T00:46:25.7102039Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T00:46:25.7102125Z               "line": 26
2026-06-22T00:46:25.7102202Z             },
2026-06-22T00:46:25.7102287Z             {
2026-06-22T00:46:25.7102397Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T00:46:25.7102478Z               "line": 114
2026-06-22T00:46:25.7102555Z             },
2026-06-22T00:46:25.7102644Z             {
2026-06-22T00:46:25.7102749Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T00:46:25.7102832Z               "line": 246
2026-06-22T00:46:25.7102917Z             },
2026-06-22T00:46:25.7102996Z             {
2026-06-22T00:46:25.7103096Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.7103285Z               "line": 2442
2026-06-22T00:46:25.7103365Z             }
2026-06-22T00:46:25.7103543Z           ]
2026-06-22T00:46:25.7103633Z         },
2026-06-22T00:46:25.7103718Z         "int": {
2026-06-22T00:46:25.7103800Z           "complete": true,
2026-06-22T00:46:25.7103881Z           "evidence": [
2026-06-22T00:46:25.7103957Z             {
2026-06-22T00:46:25.7104066Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-22T00:46:25.7104153Z               "line": 58
2026-06-22T00:46:25.7104239Z             }
2026-06-22T00:46:25.7104323Z           ]
2026-06-22T00:46:25.7104401Z         },
2026-06-22T00:46:25.7104487Z         "unit": {
2026-06-22T00:46:25.7104577Z           "complete": true,
2026-06-22T00:46:25.7104667Z           "evidence": [
2026-06-22T00:46:25.7104750Z             {
2026-06-22T00:46:25.7104877Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T00:46:25.7104967Z               "line": 532
2026-06-22T00:46:25.7105055Z             },
2026-06-22T00:46:25.7105131Z             {
2026-06-22T00:46:25.7105245Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T00:46:25.7105335Z               "line": 585
2026-06-22T00:46:25.7105422Z             },
2026-06-22T00:46:25.7105493Z             {
2026-06-22T00:46:25.7105607Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T00:46:25.7105689Z               "line": 653
2026-06-22T00:46:25.7105770Z             },
2026-06-22T00:46:25.7105850Z             {
2026-06-22T00:46:25.7105968Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T00:46:25.7106049Z               "line": 1102
2026-06-22T00:46:25.7106122Z             },
2026-06-22T00:46:25.7106206Z             {
2026-06-22T00:46:25.7106316Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T00:46:25.7106408Z               "line": 271
2026-06-22T00:46:25.7106489Z             },
2026-06-22T00:46:25.7106564Z             {
2026-06-22T00:46:25.7106680Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T00:46:25.7106769Z               "line": 295
2026-06-22T00:46:25.7106855Z             },
2026-06-22T00:46:25.7106936Z             {
2026-06-22T00:46:25.7107056Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T00:46:25.7107142Z               "line": 316
2026-06-22T00:46:25.7107227Z             },
2026-06-22T00:46:25.7107309Z             {
2026-06-22T00:46:25.7107417Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T00:46:25.7107499Z               "line": 332
2026-06-22T00:46:25.7107585Z             }
2026-06-22T00:46:25.7107667Z           ]
2026-06-22T00:46:25.7107751Z         }
2026-06-22T00:46:25.7107832Z       }
2026-06-22T00:46:25.7107914Z     },
2026-06-22T00:46:25.7107996Z     {
2026-06-22T00:46:25.7108080Z       "id": "REQ-UPD-4",
2026-06-22T00:46:25.7108256Z       "title": "Update gated on user confirmation by default; opt-in full-auto",
2026-06-22T00:46:25.7108346Z       "requiredStages": [
2026-06-22T00:46:25.7108425Z         "impl",
2026-06-22T00:46:25.7108515Z         "unit"
2026-06-22T00:46:25.7108592Z       ],
2026-06-22T00:46:25.7108674Z       "stages": {
2026-06-22T00:46:25.7108759Z         "doc": {
2026-06-22T00:46:25.7108839Z           "complete": false,
2026-06-22T00:46:25.7108931Z           "evidence": []
2026-06-22T00:46:25.7109092Z         },
2026-06-22T00:46:25.7109178Z         "impl": {
2026-06-22T00:46:25.7109270Z           "complete": true,
2026-06-22T00:46:25.7109351Z           "evidence": [
2026-06-22T00:46:25.7109431Z             {
2026-06-22T00:46:25.7109537Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T00:46:25.7109627Z               "line": 41
2026-06-22T00:46:25.7109699Z             },
2026-06-22T00:46:25.7109784Z             {
2026-06-22T00:46:25.7109900Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T00:46:25.7109989Z               "line": 88
2026-06-22T00:46:25.7110075Z             },
2026-06-22T00:46:25.7110157Z             {
2026-06-22T00:46:25.7110371Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-22T00:46:25.7110457Z               "line": 23
2026-06-22T00:46:25.7110632Z             },
2026-06-22T00:46:25.7110714Z             {
2026-06-22T00:46:25.7110820Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-22T00:46:25.7110901Z               "line": 56
2026-06-22T00:46:25.7110971Z             },
2026-06-22T00:46:25.7111051Z             {
2026-06-22T00:46:25.7111166Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-22T00:46:25.7111250Z               "line": 77
2026-06-22T00:46:25.7111331Z             },
2026-06-22T00:46:25.7111416Z             {
2026-06-22T00:46:25.7111536Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T00:46:25.7111612Z               "line": 236
2026-06-22T00:46:25.7111697Z             },
2026-06-22T00:46:25.7111774Z             {
2026-06-22T00:46:25.7111884Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T00:46:25.7111969Z               "line": 108
2026-06-22T00:46:25.7112050Z             },
2026-06-22T00:46:25.7112133Z             {
2026-06-22T00:46:25.7112247Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T00:46:25.7112332Z               "line": 270
2026-06-22T00:46:25.7112413Z             },
2026-06-22T00:46:25.7112495Z             {
2026-06-22T00:46:25.7112594Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.7112685Z               "line": 2441
2026-06-22T00:46:25.7112763Z             }
2026-06-22T00:46:25.7112842Z           ]
2026-06-22T00:46:25.7112923Z         },
2026-06-22T00:46:25.7113004Z         "int": {
2026-06-22T00:46:25.7113087Z           "complete": false,
2026-06-22T00:46:25.7113167Z           "evidence": []
2026-06-22T00:46:25.7113242Z         },
2026-06-22T00:46:25.7113324Z         "unit": {
2026-06-22T00:46:25.7113411Z           "complete": true,
2026-06-22T00:46:25.7113500Z           "evidence": [
2026-06-22T00:46:25.7113580Z             {
2026-06-22T00:46:25.7113699Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T00:46:25.7113794Z               "line": 581
2026-06-22T00:46:25.7113883Z             },
2026-06-22T00:46:25.7113968Z             {
2026-06-22T00:46:25.7114069Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T00:46:25.7114156Z               "line": 706
2026-06-22T00:46:25.7114240Z             },
2026-06-22T00:46:25.7114321Z             {
2026-06-22T00:46:25.7114432Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T00:46:25.7114517Z               "line": 384
2026-06-22T00:46:25.7114598Z             },
2026-06-22T00:46:25.7114680Z             {
2026-06-22T00:46:25.7114794Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-22T00:46:25.7114870Z               "line": 102
2026-06-22T00:46:25.7114951Z             },
2026-06-22T00:46:25.7115033Z             {
2026-06-22T00:46:25.7115147Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-22T00:46:25.7115232Z               "line": 123
2026-06-22T00:46:25.7115315Z             },
2026-06-22T00:46:25.7115400Z             {
2026-06-22T00:46:25.7115504Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-22T00:46:25.7115595Z               "line": 142
2026-06-22T00:46:25.7115677Z             },
2026-06-22T00:46:25.7115748Z             {
2026-06-22T00:46:25.7115862Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T00:46:25.7115944Z               "line": 582
2026-06-22T00:46:25.7116029Z             },
2026-06-22T00:46:25.7116114Z             {
2026-06-22T00:46:25.7116225Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T00:46:25.7116316Z               "line": 566
2026-06-22T00:46:25.7116386Z             },
2026-06-22T00:46:25.7116466Z             {
2026-06-22T00:46:25.7116566Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.7116649Z               "line": 8256
2026-06-22T00:46:25.7116734Z             }
2026-06-22T00:46:25.7116814Z           ]
2026-06-22T00:46:25.7116891Z         }
2026-06-22T00:46:25.7117058Z       }
2026-06-22T00:46:25.7117138Z     },
2026-06-22T00:46:25.7117221Z     {
2026-06-22T00:46:25.7117387Z       "id": "REQ-UPD-5",
2026-06-22T00:46:25.7117530Z       "title": "spt-core ripple-updates registered adapters",
2026-06-22T00:46:25.7117611Z       "requiredStages": [
2026-06-22T00:46:25.7117692Z         "impl",
2026-06-22T00:46:25.7117767Z         "unit"
2026-06-22T00:46:25.7117845Z       ],
2026-06-22T00:46:25.7117922Z       "stages": {
2026-06-22T00:46:25.7118006Z         "doc": {
2026-06-22T00:46:25.7118097Z           "complete": false,
2026-06-22T00:46:25.7118179Z           "evidence": []
2026-06-22T00:46:25.7118265Z         },
2026-06-22T00:46:25.7118344Z         "impl": {
2026-06-22T00:46:25.7118441Z           "complete": true,
2026-06-22T00:46:25.7118528Z           "evidence": [
2026-06-22T00:46:25.7118612Z             {
2026-06-22T00:46:25.7118735Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T00:46:25.7118816Z               "line": 27
2026-06-22T00:46:25.7118907Z             },
2026-06-22T00:46:25.7119048Z             {
2026-06-22T00:46:25.7119176Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T00:46:25.7119254Z               "line": 87
2026-06-22T00:46:25.7119343Z             },
2026-06-22T00:46:25.7119424Z             {
2026-06-22T00:46:25.7119549Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T00:46:25.7119629Z               "line": 145
2026-06-22T00:46:25.7119705Z             },
2026-06-22T00:46:25.7119782Z             {
2026-06-22T00:46:25.7119892Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T00:46:25.7119981Z               "line": 492
2026-06-22T00:46:25.7120068Z             },
2026-06-22T00:46:25.7120150Z             {
2026-06-22T00:46:25.7120268Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T00:46:25.7120354Z               "line": 546
2026-06-22T00:46:25.7120431Z             }
2026-06-22T00:46:25.7120507Z           ]
2026-06-22T00:46:25.7120588Z         },
2026-06-22T00:46:25.7120673Z         "int": {
2026-06-22T00:46:25.7120765Z           "complete": false,
2026-06-22T00:46:25.7120854Z           "evidence": []
2026-06-22T00:46:25.7120936Z         },
2026-06-22T00:46:25.7121017Z         "unit": {
2026-06-22T00:46:25.7121113Z           "complete": true,
2026-06-22T00:46:25.7121197Z           "evidence": [
2026-06-22T00:46:25.7121279Z             {
2026-06-22T00:46:25.7121404Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T00:46:25.7121489Z               "line": 272
2026-06-22T00:46:25.7121574Z             },
2026-06-22T00:46:25.7121659Z             {
2026-06-22T00:46:25.7121783Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T00:46:25.7121872Z               "line": 286
2026-06-22T00:46:25.7121952Z             },
2026-06-22T00:46:25.7122024Z             {
2026-06-22T00:46:25.7122153Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T00:46:25.7122239Z               "line": 300
2026-06-22T00:46:25.7122325Z             },
2026-06-22T00:46:25.7122401Z             {
2026-06-22T00:46:25.7122520Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T00:46:25.7122615Z               "line": 314
2026-06-22T00:46:25.7122693Z             },
2026-06-22T00:46:25.7122778Z             {
2026-06-22T00:46:25.7122892Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T00:46:25.7122973Z               "line": 348
2026-06-22T00:46:25.7123059Z             },
2026-06-22T00:46:25.7123145Z             {
2026-06-22T00:46:25.7123269Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.7123351Z               "line": 1071
2026-06-22T00:46:25.7123431Z             }
2026-06-22T00:46:25.7123512Z           ]
2026-06-22T00:46:25.7123599Z         }
2026-06-22T00:46:25.7123684Z       }
2026-06-22T00:46:25.7123764Z     },
2026-06-22T00:46:25.7123846Z     {
2026-06-22T00:46:25.7123928Z       "id": "REQ-UPD-6",
2026-06-22T00:46:25.7124810Z       "title": "Platform-targeted update sets and debug rollout: signed multi-platform update metadata, recipient platform selection, channel-scoped monotonic counters, debug-channel opt-in via release-key overlay, local staging plus pull-based peer propagation, and maintainer-only convergence tooling (ADR-0016)",
2026-06-22T00:46:25.7125006Z       "requiredStages": [
2026-06-22T00:46:25.7125087Z         "doc",
2026-06-22T00:46:25.7125168Z         "impl",
2026-06-22T00:46:25.7125250Z         "unit",
2026-06-22T00:46:25.7125340Z         "int"
2026-06-22T00:46:25.7125416Z       ],
2026-06-22T00:46:25.7125507Z       "stages": {
2026-06-22T00:46:25.7125588Z         "doc": {
2026-06-22T00:46:25.7125669Z           "complete": true,
2026-06-22T00:46:25.7125754Z           "evidence": [
2026-06-22T00:46:25.7125836Z             {
2026-06-22T00:46:25.7125965Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-22T00:46:25.7126046Z               "line": 3
2026-06-22T00:46:25.7126131Z             },
2026-06-22T00:46:25.7126213Z             {
2026-06-22T00:46:25.7126326Z               "path": "docs/DEBUG-ROLLOUT.md",
2026-06-22T00:46:25.7126417Z               "line": 3
2026-06-22T00:46:25.7126500Z             },
2026-06-22T00:46:25.7126589Z             {
2026-06-22T00:46:25.7126741Z               "path": "docs/adr/0016-platform-targeted-update-sets.md",
2026-06-22T00:46:25.7126829Z               "line": 3
2026-06-22T00:46:25.7126914Z             }
2026-06-22T00:46:25.7126994Z           ]
2026-06-22T00:46:25.7127079Z         },
2026-06-22T00:46:25.7127160Z         "impl": {
2026-06-22T00:46:25.7127257Z           "complete": true,
2026-06-22T00:46:25.7127341Z           "evidence": [
2026-06-22T00:46:25.7127417Z             {
2026-06-22T00:46:25.7127547Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T00:46:25.7127623Z               "line": 76
2026-06-22T00:46:25.7127708Z             },
2026-06-22T00:46:25.7127790Z             {
2026-06-22T00:46:25.7127914Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T00:46:25.7127999Z               "line": 212
2026-06-22T00:46:25.7128085Z             },
2026-06-22T00:46:25.7128205Z             {
2026-06-22T00:46:25.7128357Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T00:46:25.7128443Z               "line": 69
2026-06-22T00:46:25.7128529Z             },
2026-06-22T00:46:25.7128615Z             {
2026-06-22T00:46:25.7128730Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T00:46:25.7128820Z               "line": 133
2026-06-22T00:46:25.7128909Z             },
2026-06-22T00:46:25.7129069Z             {
2026-06-22T00:46:25.7129191Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T00:46:25.7129276Z               "line": 243
2026-06-22T00:46:25.7129352Z             },
2026-06-22T00:46:25.7129433Z             {
2026-06-22T00:46:25.7129550Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T00:46:25.7129636Z               "line": 406
2026-06-22T00:46:25.7129722Z             },
2026-06-22T00:46:25.7129804Z             {
2026-06-22T00:46:25.7129922Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T00:46:25.7130008Z               "line": 534
2026-06-22T00:46:25.7130090Z             },
2026-06-22T00:46:25.7130166Z             {
2026-06-22T00:46:25.7130284Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T00:46:25.7130371Z               "line": 548
2026-06-22T00:46:25.7130456Z             },
2026-06-22T00:46:25.7130537Z             {
2026-06-22T00:46:25.7130643Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T00:46:25.7130724Z               "line": 603
2026-06-22T00:46:25.7130805Z             },
2026-06-22T00:46:25.7130885Z             {
2026-06-22T00:46:25.7130991Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T00:46:25.7131077Z               "line": 634
2026-06-22T00:46:25.7131158Z             },
2026-06-22T00:46:25.7131238Z             {
2026-06-22T00:46:25.7131472Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-22T00:46:25.7131563Z               "line": 137
2026-06-22T00:46:25.7131753Z             },
2026-06-22T00:46:25.7131834Z             {
2026-06-22T00:46:25.7131950Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-22T00:46:25.7132031Z               "line": 184
2026-06-22T00:46:25.7132115Z             },
2026-06-22T00:46:25.7132191Z             {
2026-06-22T00:46:25.7132305Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T00:46:25.7132390Z               "line": 78
2026-06-22T00:46:25.7132470Z             },
2026-06-22T00:46:25.7132556Z             {
2026-06-22T00:46:25.7132666Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T00:46:25.7132751Z               "line": 114
2026-06-22T00:46:25.7132837Z             },
2026-06-22T00:46:25.7132919Z             {
2026-06-22T00:46:25.7133034Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T00:46:25.7133113Z               "line": 185
2026-06-22T00:46:25.7133200Z             },
2026-06-22T00:46:25.7133281Z             {
2026-06-22T00:46:25.7133404Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T00:46:25.7133495Z               "line": 260
2026-06-22T00:46:25.7133572Z             },
2026-06-22T00:46:25.7133657Z             {
2026-06-22T00:46:25.7133772Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T00:46:25.7133863Z               "line": 292
2026-06-22T00:46:25.7133944Z             },
2026-06-22T00:46:25.7134029Z             {
2026-06-22T00:46:25.7134144Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T00:46:25.7134226Z               "line": 323
2026-06-22T00:46:25.7134315Z             },
2026-06-22T00:46:25.7134396Z             {
2026-06-22T00:46:25.7134512Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T00:46:25.7134588Z               "line": 346
2026-06-22T00:46:25.7134668Z             },
2026-06-22T00:46:25.7134752Z             {
2026-06-22T00:46:25.7134872Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T00:46:25.7134961Z               "line": 388
2026-06-22T00:46:25.7135046Z             },
2026-06-22T00:46:25.7135132Z             {
2026-06-22T00:46:25.7135243Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T00:46:25.7135332Z               "line": 398
2026-06-22T00:46:25.7135418Z             },
2026-06-22T00:46:25.7135500Z             {
2026-06-22T00:46:25.7135614Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T00:46:25.7135694Z               "line": 410
2026-06-22T00:46:25.7135781Z             },
2026-06-22T00:46:25.7135862Z             {
2026-06-22T00:46:25.7135976Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T00:46:25.7136067Z               "line": 420
2026-06-22T00:46:25.7136148Z             },
2026-06-22T00:46:25.7136234Z             {
2026-06-22T00:46:25.7136343Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T00:46:25.7136435Z               "line": 439
2026-06-22T00:46:25.7136515Z             },
2026-06-22T00:46:25.7136582Z             {
2026-06-22T00:46:25.7136696Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T00:46:25.7136783Z               "line": 449
2026-06-22T00:46:25.7136858Z             },
2026-06-22T00:46:25.7136939Z             {
2026-06-22T00:46:25.7137060Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T00:46:25.7137145Z               "line": 94
2026-06-22T00:46:25.7137230Z             },
2026-06-22T00:46:25.7137311Z             {
2026-06-22T00:46:25.7137417Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T00:46:25.7137506Z               "line": 120
2026-06-22T00:46:25.7137587Z             },
2026-06-22T00:46:25.7137672Z             {
2026-06-22T00:46:25.7137778Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T00:46:25.7137863Z               "line": 135
2026-06-22T00:46:25.7137948Z             },
2026-06-22T00:46:25.7138107Z             {
2026-06-22T00:46:25.7138221Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T00:46:25.7138369Z               "line": 162
2026-06-22T00:46:25.7138455Z             },
2026-06-22T00:46:25.7138531Z             {
2026-06-22T00:46:25.7138640Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T00:46:25.7138722Z               "line": 174
2026-06-22T00:46:25.7138802Z             },
2026-06-22T00:46:25.7138883Z             {
2026-06-22T00:46:25.7139084Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T00:46:25.7139170Z               "line": 185
2026-06-22T00:46:25.7139256Z             },
2026-06-22T00:46:25.7139337Z             {
2026-06-22T00:46:25.7139451Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T00:46:25.7139532Z               "line": 451
2026-06-22T00:46:25.7139614Z             },
2026-06-22T00:46:25.7139695Z             {
2026-06-22T00:46:25.7139807Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T00:46:25.7139907Z               "line": 573
2026-06-22T00:46:25.7139989Z             },
2026-06-22T00:46:25.7140069Z             {
2026-06-22T00:46:25.7140172Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T00:46:25.7140259Z               "line": 171
2026-06-22T00:46:25.7140340Z             },
2026-06-22T00:46:25.7140426Z             {
2026-06-22T00:46:25.7140535Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T00:46:25.7140616Z               "line": 65
2026-06-22T00:46:25.7140702Z             },
2026-06-22T00:46:25.7140787Z             {
2026-06-22T00:46:25.7140903Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T00:46:25.7140984Z               "line": 71
2026-06-22T00:46:25.7141064Z             },
2026-06-22T00:46:25.7141154Z             {
2026-06-22T00:46:25.7141251Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T00:46:25.7141345Z               "line": 77
2026-06-22T00:46:25.7141431Z             },
2026-06-22T00:46:25.7141512Z             {
2026-06-22T00:46:25.7141613Z               "path": "crates/xtask/src/main.rs",
2026-06-22T00:46:25.7141694Z               "line": 778
2026-06-22T00:46:25.7141779Z             },
2026-06-22T00:46:25.7141862Z             {
2026-06-22T00:46:25.7141970Z               "path": "crates/xtask/src/main.rs",
2026-06-22T00:46:25.7142056Z               "line": 795
2026-06-22T00:46:25.7142137Z             },
2026-06-22T00:46:25.7142219Z             {
2026-06-22T00:46:25.7142318Z               "path": "crates/xtask/src/main.rs",
2026-06-22T00:46:25.7142409Z               "line": 838
2026-06-22T00:46:25.7142481Z             },
2026-06-22T00:46:25.7142563Z             {
2026-06-22T00:46:25.7142665Z               "path": "crates/xtask/src/main.rs",
2026-06-22T00:46:25.7142760Z               "line": 981
2026-06-22T00:46:25.7142837Z             },
2026-06-22T00:46:25.7142917Z             {
2026-06-22T00:46:25.7143025Z               "path": "crates/xtask/src/main.rs",
2026-06-22T00:46:25.7143116Z               "line": 1131
2026-06-22T00:46:25.7143203Z             }
2026-06-22T00:46:25.7143279Z           ]
2026-06-22T00:46:25.7143378Z         },
2026-06-22T00:46:25.7143464Z         "int": {
2026-06-22T00:46:25.7143550Z           "complete": true,
2026-06-22T00:46:25.7143631Z           "evidence": [
2026-06-22T00:46:25.7143707Z             {
2026-06-22T00:46:25.7143837Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-22T00:46:25.7143923Z               "line": 569
2026-06-22T00:46:25.7144007Z             },
2026-06-22T00:46:25.7144089Z             {
2026-06-22T00:46:25.7144194Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-22T00:46:25.7144279Z               "line": 135
2026-06-22T00:46:25.7144361Z             }
2026-06-22T00:46:25.7144438Z           ]
2026-06-22T00:46:25.7144518Z         },
2026-06-22T00:46:25.7144599Z         "unit": {
2026-06-22T00:46:25.7144689Z           "complete": true,
2026-06-22T00:46:25.7144776Z           "evidence": [
2026-06-22T00:46:25.7144961Z             {
2026-06-22T00:46:25.7145082Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T00:46:25.7145256Z               "line": 626
2026-06-22T00:46:25.7145341Z             },
2026-06-22T00:46:25.7145418Z             {
2026-06-22T00:46:25.7145539Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T00:46:25.7145625Z               "line": 675
2026-06-22T00:46:25.7145711Z             },
2026-06-22T00:46:25.7145788Z             {
2026-06-22T00:46:25.7145911Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T00:46:25.7145997Z               "line": 696
2026-06-22T00:46:25.7146084Z             },
2026-06-22T00:46:25.7146169Z             {
2026-06-22T00:46:25.7146283Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T00:46:25.7146375Z               "line": 513
2026-06-22T00:46:25.7146455Z             },
2026-06-22T00:46:25.7146531Z             {
2026-06-22T00:46:25.7146637Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T00:46:25.7146737Z               "line": 638
2026-06-22T00:46:25.7146822Z             },
2026-06-22T00:46:25.7146903Z             {
2026-06-22T00:46:25.7147014Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T00:46:25.7147094Z               "line": 675
2026-06-22T00:46:25.7147180Z             },
2026-06-22T00:46:25.7147261Z             {
2026-06-22T00:46:25.7147367Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T00:46:25.7147451Z               "line": 947
2026-06-22T00:46:25.7147533Z             },
2026-06-22T00:46:25.7147620Z             {
2026-06-22T00:46:25.7147733Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T00:46:25.7147819Z               "line": 969
2026-06-22T00:46:25.7147906Z             },
2026-06-22T00:46:25.7147978Z             {
2026-06-22T00:46:25.7148085Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T00:46:25.7148166Z               "line": 986
2026-06-22T00:46:25.7148251Z             },
2026-06-22T00:46:25.7148329Z             {
2026-06-22T00:46:25.7148447Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T00:46:25.7148542Z               "line": 1001
2026-06-22T00:46:25.7148619Z             },
2026-06-22T00:46:25.7148705Z             {
2026-06-22T00:46:25.7148819Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T00:46:25.7148896Z               "line": 1027
2026-06-22T00:46:25.7149067Z             },
2026-06-22T00:46:25.7149152Z             {
2026-06-22T00:46:25.7149273Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T00:46:25.7152946Z               "line": 457
2026-06-22T00:46:25.7153051Z             },
2026-06-22T00:46:25.7153137Z             {
2026-06-22T00:46:25.7153283Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-22T00:46:25.7153368Z               "line": 338
2026-06-22T00:46:25.7153459Z             },
2026-06-22T00:46:25.7153543Z             {
2026-06-22T00:46:25.7153652Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.7153758Z               "line": 10549
2026-06-22T00:46:25.7153848Z             },
2026-06-22T00:46:25.7153928Z             {
2026-06-22T00:46:25.7154034Z               "path": "crates/xtask/src/main.rs",
2026-06-22T00:46:25.7154120Z               "line": 1260
2026-06-22T00:46:25.7154205Z             },
2026-06-22T00:46:25.7154286Z             {
2026-06-22T00:46:25.7154402Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-22T00:46:25.7154488Z               "line": 130
2026-06-22T00:46:25.7154572Z             }
2026-06-22T00:46:25.7154644Z           ]
2026-06-22T00:46:25.7154726Z         }
2026-06-22T00:46:25.7154811Z       }
2026-06-22T00:46:25.7154892Z     },
2026-06-22T00:46:25.7154974Z     {
2026-06-22T00:46:25.7155069Z       "id": "REQ-UPD-7",
2026-06-22T00:46:25.7157182Z       "title": "Origin-source update bootstrap (`spt update fetch`): pull the latest signed release directly from the GitHub release origin (`SaberMage/spt-releases`) — the per-platform artifact + its `<asset>.release.json` SignedRelease metadata — and stage it through the EXISTING verify→stage pipeline (the same `plan_verified` gate: two-key signature + channel + monotonic rollback floor + SHA-256), after which the normal consent-notif / `spt update apply` flow is unchanged. Closes the peer-only-discovery gap (REQ-UPD-1): a first-in-fleet / isolated node can update with no peer to pull from. The signed-release anchor keeps the GitHub transport untrusted-but-verified.",
2026-06-22T00:46:25.7157526Z       "requiredStages": [
2026-06-22T00:46:25.7157612Z         "impl",
2026-06-22T00:46:25.7157693Z         "unit"
2026-06-22T00:46:25.7157773Z       ],
2026-06-22T00:46:25.7157860Z       "stages": {
2026-06-22T00:46:25.7157946Z         "doc": {
2026-06-22T00:46:25.7158036Z           "complete": false,
2026-06-22T00:46:25.7158126Z           "evidence": []
2026-06-22T00:46:25.7158204Z         },
2026-06-22T00:46:25.7158293Z         "impl": {
2026-06-22T00:46:25.7158384Z           "complete": true,
2026-06-22T00:46:25.7158485Z           "evidence": [
2026-06-22T00:46:25.7158571Z             {
2026-06-22T00:46:25.7158674Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.7158768Z               "line": 2626
2026-06-22T00:46:25.7158846Z             }
2026-06-22T00:46:25.7158927Z           ]
2026-06-22T00:46:25.7159098Z         },
2026-06-22T00:46:25.7159189Z         "int": {
2026-06-22T00:46:25.7159270Z           "complete": false,
2026-06-22T00:46:25.7159355Z           "evidence": []
2026-06-22T00:46:25.7159437Z         },
2026-06-22T00:46:25.7159518Z         "unit": {
2026-06-22T00:46:25.7159613Z           "complete": true,
2026-06-22T00:46:25.7159699Z           "evidence": [
2026-06-22T00:46:25.7159785Z             {
2026-06-22T00:46:25.7159890Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.7159975Z               "line": 10525
2026-06-22T00:46:25.7160056Z             }
2026-06-22T00:46:25.7160125Z           ]
2026-06-22T00:46:25.7160209Z         }
2026-06-22T00:46:25.7160342Z       }
2026-06-22T00:46:25.7160425Z     },
2026-06-22T00:46:25.7160510Z     {
2026-06-22T00:46:25.7160595Z       "id": "REQ-UPD-8",
2026-06-22T00:46:25.7163015Z       "title": "Platform-safe `spt update fetch` + apply platform-guard (v0.3.1 cross-OS brick fix): `spt update fetch` stages the signed multi-platform `SignedUpdateSet` (`update-set.json` + every platform artifact it names), never a platform-blind single `SignedRelease`, so local apply selects `current_platform()` and P2P re-serve lets each peer select ITS own platform. Defense-in-depth: `apply_staged` REFUSES a staged single-release artifact unless it is platform-stamped for THIS node (an unstamped pre-v0.3.2 single, or a single stamped for another OS, fail-safe refuses — the guard that alone prevents the v0.3.1 brick where a Linux ELF was applied as `spt.exe`). UX: a friendly post-apply message (`Updated spt-core to vX.Y.Z.` + changelog URL) driven by an additive `product_version` metadata field, with a release-counter fallback when absent.",
2026-06-22T00:46:25.7163128Z       "requiredStages": [
2026-06-22T00:46:25.7163205Z         "impl",
2026-06-22T00:46:25.7163297Z         "unit"
2026-06-22T00:46:25.7163377Z       ],
2026-06-22T00:46:25.7163467Z       "stages": {
2026-06-22T00:46:25.7163553Z         "doc": {
2026-06-22T00:46:25.7163636Z           "complete": false,
2026-06-22T00:46:25.7163725Z           "evidence": []
2026-06-22T00:46:25.7163805Z         },
2026-06-22T00:46:25.7163890Z         "impl": {
2026-06-22T00:46:25.7163967Z           "complete": true,
2026-06-22T00:46:25.7164061Z           "evidence": [
2026-06-22T00:46:25.7164150Z             {
2026-06-22T00:46:25.7164279Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T00:46:25.7164370Z               "line": 77
2026-06-22T00:46:25.7164451Z             },
2026-06-22T00:46:25.7164532Z             {
2026-06-22T00:46:25.7164652Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T00:46:25.7164737Z               "line": 49
2026-06-22T00:46:25.7164957Z             },
2026-06-22T00:46:25.7165038Z             {
2026-06-22T00:46:25.7165161Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T00:46:25.7165342Z               "line": 152
2026-06-22T00:46:25.7165428Z             },
2026-06-22T00:46:25.7165509Z             {
2026-06-22T00:46:25.7165620Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T00:46:25.7165704Z               "line": 215
2026-06-22T00:46:25.7165786Z             },
2026-06-22T00:46:25.7165859Z             {
2026-06-22T00:46:25.7165972Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T00:46:25.7166058Z               "line": 230
2026-06-22T00:46:25.7166139Z             },
2026-06-22T00:46:25.7166226Z             {
2026-06-22T00:46:25.7166343Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T00:46:25.7166428Z               "line": 247
2026-06-22T00:46:25.7166514Z             },
2026-06-22T00:46:25.7166600Z             {
2026-06-22T00:46:25.7166707Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T00:46:25.7166793Z               "line": 269
2026-06-22T00:46:25.7166875Z             },
2026-06-22T00:46:25.7166957Z             {
2026-06-22T00:46:25.7167074Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T00:46:25.7167151Z               "line": 66
2026-06-22T00:46:25.7167223Z             },
2026-06-22T00:46:25.7167299Z             {
2026-06-22T00:46:25.7167408Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T00:46:25.7167500Z               "line": 154
2026-06-22T00:46:25.7167590Z             },
2026-06-22T00:46:25.7167670Z             {
2026-06-22T00:46:25.7167772Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.7167857Z               "line": 2430
2026-06-22T00:46:25.7167938Z             },
2026-06-22T00:46:25.7168014Z             {
2026-06-22T00:46:25.7168110Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.7168200Z               "line": 2493
2026-06-22T00:46:25.7168281Z             },
2026-06-22T00:46:25.7168362Z             {
2026-06-22T00:46:25.7168468Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.7168557Z               "line": 2503
2026-06-22T00:46:25.7168643Z             },
2026-06-22T00:46:25.7168726Z             {
2026-06-22T00:46:25.7168830Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.7168920Z               "line": 2510
2026-06-22T00:46:25.7169098Z             },
2026-06-22T00:46:25.7169173Z             {
2026-06-22T00:46:25.7169291Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.7169386Z               "line": 2627
2026-06-22T00:46:25.7169468Z             },
2026-06-22T00:46:25.7169543Z             {
2026-06-22T00:46:25.7169648Z               "path": "crates/xtask/src/main.rs",
2026-06-22T00:46:25.7169730Z               "line": 480
2026-06-22T00:46:25.7169811Z             },
2026-06-22T00:46:25.7169891Z             {
2026-06-22T00:46:25.7170002Z               "path": "crates/xtask/src/main.rs",
2026-06-22T00:46:25.7170088Z               "line": 494
2026-06-22T00:46:25.7170169Z             }
2026-06-22T00:46:25.7170249Z           ]
2026-06-22T00:46:25.7170336Z         },
2026-06-22T00:46:25.7170421Z         "int": {
2026-06-22T00:46:25.7170516Z           "complete": false,
2026-06-22T00:46:25.7170606Z           "evidence": []
2026-06-22T00:46:25.7170689Z         },
2026-06-22T00:46:25.7170769Z         "unit": {
2026-06-22T00:46:25.7170855Z           "complete": true,
2026-06-22T00:46:25.7170951Z           "evidence": [
2026-06-22T00:46:25.7171028Z             {
2026-06-22T00:46:25.7171150Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T00:46:25.7171241Z               "line": 476
2026-06-22T00:46:25.7171314Z             },
2026-06-22T00:46:25.7171404Z             {
2026-06-22T00:46:25.7171521Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T00:46:25.7171621Z               "line": 580
2026-06-22T00:46:25.7171697Z             },
2026-06-22T00:46:25.7171786Z             {
2026-06-22T00:46:25.7172001Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.7172086Z               "line": 10527
2026-06-22T00:46:25.7172273Z             },
2026-06-22T00:46:25.7172350Z             {
2026-06-22T00:46:25.7172449Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.7172539Z               "line": 10549
2026-06-22T00:46:25.7172621Z             }
2026-06-22T00:46:25.7172702Z           ]
2026-06-22T00:46:25.7172782Z         }
2026-06-22T00:46:25.7172869Z       }
2026-06-22T00:46:25.7172950Z     },
2026-06-22T00:46:25.7173031Z     {
2026-06-22T00:46:25.7173126Z       "id": "REQ-UPD-9",
2026-06-22T00:46:25.7175617Z       "title": "`gh_release` adapter [update] avenue (optional signing): an adapter declares `[update] avenue = \"gh_release\", repo = \"user/repo\"` (+ optional `asset`, default `adapter.spt`; + optional Ed25519 `signing_key`); spt-core's ripple compares the repo's LATEST GitHub release version against the installed adapter version and, when newer, auto-updates by fetching the release `.spt` archive (the REQ-INSTALL-9 `--release` fetch primitive) → verifies the `.spt` against `signing_key` if declared, else HTTPS+GitHub first-acquisition trust → re-extracts + re-registers the adapter root. Lets a harness adapter ship updates from its own GitHub releases with NO signing tooling or plugin coupling (removes the perri file_pull/delegated avenue blockers). Acquisition-trust mirrors `--release` + the installer first-fetch; does not alter spt-core self-update (REQ-UPD-1..8).",
2026-06-22T00:46:25.7175721Z       "requiredStages": [
2026-06-22T00:46:25.7175813Z         "doc",
2026-06-22T00:46:25.7175898Z         "impl",
2026-06-22T00:46:25.7175984Z         "unit"
2026-06-22T00:46:25.7176065Z       ],
2026-06-22T00:46:25.7176156Z       "stages": {
2026-06-22T00:46:25.7176236Z         "doc": {
2026-06-22T00:46:25.7176331Z           "complete": true,
2026-06-22T00:46:25.7176424Z           "evidence": [
2026-06-22T00:46:25.7176504Z             {
2026-06-22T00:46:25.7176613Z               "path": "CONTEXT.md",
2026-06-22T00:46:25.7176704Z               "line": 93
2026-06-22T00:46:25.7176809Z             },
2026-06-22T00:46:25.7176889Z             {
2026-06-22T00:46:25.7176988Z               "path": "docs/MANIFEST.md",
2026-06-22T00:46:25.7177070Z               "line": 285
2026-06-22T00:46:25.7177150Z             }
2026-06-22T00:46:25.7177235Z           ]
2026-06-22T00:46:25.7177315Z         },
2026-06-22T00:46:25.7177401Z         "impl": {
2026-06-22T00:46:25.7177488Z           "complete": true,
2026-06-22T00:46:25.7177582Z           "evidence": [
2026-06-22T00:46:25.7177668Z             {
2026-06-22T00:46:25.7177797Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T00:46:25.7177883Z               "line": 128
2026-06-22T00:46:25.7177959Z             },
2026-06-22T00:46:25.7178036Z             {
2026-06-22T00:46:25.7178150Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T00:46:25.7178240Z               "line": 533
2026-06-22T00:46:25.7178322Z             },
2026-06-22T00:46:25.7178399Z             {
2026-06-22T00:46:25.7178536Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.7178661Z               "line": 459
2026-06-22T00:46:25.7178751Z             },
2026-06-22T00:46:25.7178827Z             {
2026-06-22T00:46:25.7179047Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.7179136Z               "line": 505
2026-06-22T00:46:25.7179237Z             },
2026-06-22T00:46:25.7179358Z             {
2026-06-22T00:46:25.7179470Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.7179567Z               "line": 928
2026-06-22T00:46:25.7179643Z             },
2026-06-22T00:46:25.7179738Z             {
2026-06-22T00:46:25.7179860Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T00:46:25.7179942Z               "line": 302
2026-06-22T00:46:25.7180014Z             },
2026-06-22T00:46:25.7180104Z             {
2026-06-22T00:46:25.7180376Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.7180466Z               "line": 5675
2026-06-22T00:46:25.7180634Z             },
2026-06-22T00:46:25.7180715Z             {
2026-06-22T00:46:25.7180823Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.7180915Z               "line": 5720
2026-06-22T00:46:25.7180996Z             },
2026-06-22T00:46:25.7181081Z             {
2026-06-22T00:46:25.7181181Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.7181278Z               "line": 5857
2026-06-22T00:46:25.7181367Z             },
2026-06-22T00:46:25.7181453Z             {
2026-06-22T00:46:25.7181559Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.7181639Z               "line": 5878
2026-06-22T00:46:25.7181725Z             },
2026-06-22T00:46:25.7181811Z             {
2026-06-22T00:46:25.7181913Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.7182006Z               "line": 5901
2026-06-22T00:46:25.7182091Z             },
2026-06-22T00:46:25.7182191Z             {
2026-06-22T00:46:25.7182290Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.7182399Z               "line": 5928
2026-06-22T00:46:25.7182485Z             }
2026-06-22T00:46:25.7182590Z           ]
2026-06-22T00:46:25.7182675Z         },
2026-06-22T00:46:25.7182760Z         "int": {
2026-06-22T00:46:25.7182862Z           "complete": false,
2026-06-22T00:46:25.7182952Z           "evidence": []
2026-06-22T00:46:25.7183071Z         },
2026-06-22T00:46:25.7183148Z         "unit": {
2026-06-22T00:46:25.7183243Z           "complete": true,
2026-06-22T00:46:25.7183342Z           "evidence": [
2026-06-22T00:46:25.7183424Z             {
2026-06-22T00:46:25.7183562Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T00:46:25.7183648Z               "line": 259
2026-06-22T00:46:25.7183743Z             },
2026-06-22T00:46:25.7183821Z             {
2026-06-22T00:46:25.7183986Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T00:46:25.7184087Z               "line": 657
2026-06-22T00:46:25.7184182Z             },
2026-06-22T00:46:25.7184282Z             {
2026-06-22T00:46:25.7184422Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T00:46:25.7184525Z               "line": 1107
2026-06-22T00:46:25.7184611Z             },
2026-06-22T00:46:25.7184693Z             {
2026-06-22T00:46:25.7184784Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.7184873Z               "line": 7565
2026-06-22T00:46:25.7184972Z             }
2026-06-22T00:46:25.7185044Z           ]
2026-06-22T00:46:25.7185139Z         }
2026-06-22T00:46:25.7185218Z       }
2026-06-22T00:46:25.7185303Z     },
2026-06-22T00:46:25.7185375Z     {
2026-06-22T00:46:25.7185505Z       "id": "REQ-VIEWER-SKIP-TO-LIVE-ON-EVICT",
2026-06-22T00:46:25.7190688Z       "title": "A `rc --view` VIEWER that overflows its broker subscription queue and is EVICTED (OutputLog::append try_send Full → viewers.remove, REQ-HAZARD-VIEWER-ISOLATION session-protection) must SKIP TO LIVE, not die silently. ROOT (v0.13.0, b4 JIT item 2 = p0_paste + post-b4 a_journaled-Linux, ONE root): serve_attach forwards each frame (read_event→b64decode→re-encode AttachRecord→net_stream_send) SLOWER than the drain fans out under flood → its VIEWER_CHANNEL_DEPTH(256) channel overflows → the drain evicts (viewers.remove drops the ViewerSink → drops tx → viewer_writer's rx.recv() Err → the writer returns WRITING NOTHING) → serve_attach's brain.read_event() just STOPS getting Output (no EOF, no error) → serve_attach blocks forever → the operator receives nothing (attach_received_output=FALSE). Eviction-of-a-hopelessly-behind-viewer is CORRECT session-protection (keep it); SILENT+PERMANENT eviction is the bug. VIEWER-only → B2-SAFE (a viewer never advances delivered_through / is not authoritative / exposes no resume cursor). FIX (doyle-gated, skip-to-live = tail -f reconnect): (1) explicit broker→viewer EVICTION SIGNAL (KIND_VIEWER_EVICTED, written in the viewer_writer thread OFF the log lock, DISTINCT from session-exit EOF so serve must NOT tear down on it); (2) serve_attach re-subscribes from the CURRENT ring floor (skip-to-live, replays nothing, sees the next live burst) — resetting the cold serve-brain's next_seq so the post-eviction forward-jump replay is accepted (the legacy reject-gap path, brain.rs:618-626, would otherwise FATAL the forward jump); (3) HARD constraint NO evict→resubscribe busy-loop: serve_attach rate-limits re-subscribes (RESUBSCRIBE_INTERVAL) so under max-flood the operator sees intermittent LIVE bursts, never a CPU spin. (v0.13.0)",
2026-06-22T00:46:25.7191045Z       "requiredStages": [
2026-06-22T00:46:25.7191137Z         "doc",
2026-06-22T00:46:25.7191223Z         "impl",
2026-06-22T00:46:25.7191308Z         "unit"
2026-06-22T00:46:25.7191398Z       ],
2026-06-22T00:46:25.7191485Z       "stages": {
2026-06-22T00:46:25.7191570Z         "doc": {
2026-06-22T00:46:25.7191660Z           "complete": true,
2026-06-22T00:46:25.7191746Z           "evidence": [
2026-06-22T00:46:25.7191847Z             {
2026-06-22T00:46:25.7191947Z               "path": "CONTEXT.md",
2026-06-22T00:46:25.7192052Z               "line": 342
2026-06-22T00:46:25.7192129Z             }
2026-06-22T00:46:25.7192218Z           ]
2026-06-22T00:46:25.7192295Z         },
2026-06-22T00:46:25.7192380Z         "impl": {
2026-06-22T00:46:25.7192482Z           "complete": true,
2026-06-22T00:46:25.7192566Z           "evidence": [
2026-06-22T00:46:25.7192656Z             {
2026-06-22T00:46:25.7192780Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T00:46:25.7192874Z               "line": 432
2026-06-22T00:46:25.7192954Z             },
2026-06-22T00:46:25.7193035Z             {
2026-06-22T00:46:25.7193150Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T00:46:25.7193230Z               "line": 683
2026-06-22T00:46:25.7193316Z             },
2026-06-22T00:46:25.7193402Z             {
2026-06-22T00:46:25.7193522Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T00:46:25.7193602Z               "line": 859
2026-06-22T00:46:25.7193694Z             },
2026-06-22T00:46:25.7193789Z             {
2026-06-22T00:46:25.7193902Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.7193994Z               "line": 788
2026-06-22T00:46:25.7194076Z             },
2026-06-22T00:46:25.7194166Z             {
2026-06-22T00:46:25.7194275Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T00:46:25.7194362Z               "line": 788
2026-06-22T00:46:25.7194446Z             }
2026-06-22T00:46:25.7194523Z           ]
2026-06-22T00:46:25.7194613Z         },
2026-06-22T00:46:25.7194691Z         "int": {
2026-06-22T00:46:25.7194794Z           "complete": false,
2026-06-22T00:46:25.7194895Z           "evidence": []
2026-06-22T00:46:25.7194972Z         },
2026-06-22T00:46:25.7195072Z         "unit": {
2026-06-22T00:46:25.7195152Z           "complete": true,
2026-06-22T00:46:25.7195248Z           "evidence": [
2026-06-22T00:46:25.7195330Z             {
2026-06-22T00:46:25.7195466Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T00:46:25.7195565Z               "line": 1448
2026-06-22T00:46:25.7195662Z             },
2026-06-22T00:46:25.7195797Z             {
2026-06-22T00:46:25.7195897Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T00:46:25.7195998Z               "line": 1605
2026-06-22T00:46:25.7196074Z             },
2026-06-22T00:46:25.7196169Z             {
2026-06-22T00:46:25.7196285Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.7196365Z               "line": 2577
2026-06-22T00:46:25.7196455Z             },
2026-06-22T00:46:25.7196531Z             {
2026-06-22T00:46:25.7196651Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T00:46:25.7196737Z               "line": 2644
2026-06-22T00:46:25.7196827Z             },
2026-06-22T00:46:25.7196914Z             {
2026-06-22T00:46:25.7197023Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T00:46:25.7197229Z               "line": 1002
2026-06-22T00:46:25.7197309Z             }
2026-06-22T00:46:25.7197394Z           ]
2026-06-22T00:46:25.7197553Z         }
2026-06-22T00:46:25.7197638Z       }
2026-06-22T00:46:25.7197719Z     },
2026-06-22T00:46:25.7197795Z     {
2026-06-22T00:46:25.7197897Z       "id": "REQ-WHOAMI-1",
2026-06-22T00:46:25.7199561Z       "title": "`spt whoami` is a thin ALIAS for `spt endpoint list` (full output: the SELF pin + the subnet roster) — the standalone bare-id command is dropped (the `id=$(spt whoami)` capture was never a real pattern: env vars don't persist between agent tool calls). The one new render: the `endpoint list` SELF pin carries the Self endpoint's authored `endpoint description` (info::read_info(...).resources) when present, inline after the liveness state. whoami stays a top-level hot-path verb (parse unchanged, REQ-MSG-9).",
2026-06-22T00:46:25.7199666Z       "requiredStages": [
2026-06-22T00:46:25.7199747Z         "doc",
2026-06-22T00:46:25.7199829Z         "impl",
2026-06-22T00:46:25.7199933Z         "unit"
2026-06-22T00:46:25.7200009Z       ],
2026-06-22T00:46:25.7200091Z       "stages": {
2026-06-22T00:46:25.7200186Z         "doc": {
2026-06-22T00:46:25.7200276Z           "complete": true,
2026-06-22T00:46:25.7200367Z           "evidence": [
2026-06-22T00:46:25.7200449Z             {
2026-06-22T00:46:25.7200548Z               "path": "CONTEXT.md",
2026-06-22T00:46:25.7200634Z               "line": 707
2026-06-22T00:46:25.7200721Z             }
2026-06-22T00:46:25.7200811Z           ]
2026-06-22T00:46:25.7200895Z         },
2026-06-22T00:46:25.7200980Z         "impl": {
2026-06-22T00:46:25.7201072Z           "complete": true,
2026-06-22T00:46:25.7201158Z           "evidence": [
2026-06-22T00:46:25.7201239Z             {
2026-06-22T00:46:25.7201357Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.7201444Z               "line": 3190
2026-06-22T00:46:25.7201525Z             },
2026-06-22T00:46:25.7201614Z             {
2026-06-22T00:46:25.7201721Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.7201811Z               "line": 3218
2026-06-22T00:46:25.7201896Z             }
2026-06-22T00:46:25.7201973Z           ]
2026-06-22T00:46:25.7202059Z         },
2026-06-22T00:46:25.7202144Z         "int": {
2026-06-22T00:46:25.7202239Z           "complete": false,
2026-06-22T00:46:25.7202321Z           "evidence": []
2026-06-22T00:46:25.7202407Z         },
2026-06-22T00:46:25.7202492Z         "unit": {
2026-06-22T00:46:25.7202587Z           "complete": true,
2026-06-22T00:46:25.7202689Z           "evidence": [
2026-06-22T00:46:25.7202765Z             {
2026-06-22T00:46:25.7202869Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.7202955Z               "line": 7847
2026-06-22T00:46:25.7203042Z             },
2026-06-22T00:46:25.7203122Z             {
2026-06-22T00:46:25.7203230Z               "path": "crates/spt/src/cli.rs",
2026-06-22T00:46:25.7203326Z               "line": 7900
2026-06-22T00:46:25.7203406Z             }
2026-06-22T00:46:25.7203505Z           ]
2026-06-22T00:46:25.7203580Z         }
2026-06-22T00:46:25.7203667Z       }
2026-06-22T00:46:25.7203754Z     }
2026-06-22T00:46:25.7203843Z   ],
2026-06-22T00:46:25.7203934Z   "findings": []
2026-06-22T00:46:25.7204015Z }
